2010년 크리스 라트너를 필두로 애플의 프로그래머들이 개발한 언어스위프트를 오픈소스로 전환하면서 그 특징을 SAFE, FAST, EXPRESSIVE로 발표했다.왜 안전성이 있는가?엄격한 문법을 적용해서 프로그래머의 실수를 미연에 방지. 이 때문에 버그 수정 및 오류를
특정 역할을 하기 위한 메서드, 프로퍼티, 기타 요구사항 등의 청사진정의 & 제시할 뿐 스스로 기능을 구현 X채택(Adopted) / 준수(Conform)채택시 청사진의 기능을 모두 구현(준수)해야 한다.여러 프로토콜 채택 가능구현시 상속이 있는 경우 제일 앞에.채택하
구조체, 클래스, 열거형 타입에 새로운 기능을 추가할 수 있음클래스의 상속은 특정 타입을 물려받아 하나의 새로운 타입을 정의하고 추가 기능을 구현하는 수직 확장익스텐션은 기존의 타입에 기능을 추가하는 수평 확장그렇기 때문에, 익스텐션은 타입에 새로운 기능 추가 O 재정
특정(Specific) 타입을 미리 지정해주는 것이 아닌 필요에 의해 지정할 수 있도록 하는 일반(Generic) 타입타입에 유연한 대응, 재사용 쉬움, 중복 줄일 수 있음 → 깔끔하고 추상적인 표현 가능플레이드 홀더 타입을 사용할 수 있음 (타입 매개변수), 함수에서
생김새C언어나 Objective-C의 블록, 다른 프로그래밍 언어의 람다(lambda)와 유사정의 : 일정 기능을 하는 코드를 하나의 블록으로 모아놓은 것. (함수랑 비슷 사실 함수가 클로저)종류이름 O 값 획득 X 전연함수의 형태이름 O 값 획득 O 중첩된 함수의 형
스위프트의 특징인 안정성을 문법으로 담보하는 기능값이 있을 수도, 없을 수도 있음을 나타내는 표현값이 없는 옵셔널 변수 또는 상수에 강제로 접근시 런타임 오류 발생'옵셔널'과 '옵셔널이 아닌 값'은 다른 타입0, "" 둘 다 하나의 값. nil이 아님변수 또는 상수에
매개변수로 함수를 갖는 함수map, filter, reduce컨테이너가 담고 있던 각각의 값을 매개변수로 전달된 함수를 적용한 후 다시 컨테이너에 포장해서 반환하는 함수기존 컨테이너 값 변경X, 새로운 컨테이너를 만들어 반환Sequence, Collection 프로토콜
모나드는 함수 내부에서 발생할 수 있는 사이드이펙트를 결과 집합과 함께 포함하는 타입입니다. 함수 실행 결과를 항상 모나드로 반환하여 순수함수 성질을 잃지 않게 하는 것입니다. 더 정확하게 얘기하자면 원시타입(boolean, int, string, float, doub
클래스에만 해당기반 클래스를 다른 클래스에서 물려받는 수직 확장1) 상속은 똑같은 기능을 구현하기 위해서 코드를 다시 작성할 필요가 없어 코드 재사용이 용이 2) 더불어 기능 확장시에 기존 클래스를 변경하지 않고도 새로운 추가 기능을 구현 및 정의할 수 있다.용어 :
swift 데이터 타입 안전 추구 → 다른 타입끼리의 값 교환을 엄격히 제한암시적 데이터 타입 변환(Implicit Type Conversion) 지원 X→ String(Int), swift에선 새로운 인스턴스 생성이지 타입캐스팅 X→ 물론 다른 언어에서는 타입 변환,
프로그램 내에서 다뤄지는 데이터의 종류를 뜻한다. 스위프트의 기본 데이터 타입은 구조체를 기반으로 익스텐션과 제네릭 등을 사용해서 구현되어 있다. 정수 타입부호를 포함하지 않는 0을 포함한 양의 정수 UInt시스템 아키텍처에 따라 Int와 UInt의 타입이 다름32비트
스위프트의 안정성이 가장 뚜렷하게 나타나는 부분, "타입에 민감하고 엄격" 그래서 다른 타입끼리는 타입캐스팅 혹은 새로운 인스턴스 생성을 해야 값을 교환할 수 있다. 이렇게 스위프트는 Type-safe 언어다. 타입과 다른 값을 할당하려고 하면 컴파일에서 타입 체크를
값을 저장하기 위해 프로퍼티 정의기능 실행을 위해 메서드 정의프로퍼티에 접근하도록 서브스크립트 정의이니셜라이저 정의(구조체는 멤버와이즈)익스텐션 확장 가능프로토콜 채택 및 준수 가능구조체 상속 X타입캐스팅은 클래스 인스턴스만 허용디이니셜라이즈는 클래스에만 활용ARC도
스위프트에는 타입 내부에 타입을 정의하고 구현할 수 있다. 이것을 중첩 타입(Nested Type)이라고 한다.자신을 둘러싼 타입의 이름을 자신보다 앞에 적어줘야 한다.Person 클래스 내부에 정의한 Job 타입을 나타내려면 위처럼 Person.Job이라고 표현Stu
객체지향 프로그래밍 패러다임에서 은닉화를 구현하기 위한 핵심 기능코드끼리 상호작용을 할 때, 파일 간, 모듈 간에 접근을 제한할 수 있는 기능.코드의 상세 구현은 숨기고, 허용된 기능만 사용하는 인터페이스를 제공할 수 있도록 하는 기능스위프트 접근제어는 모듈과 소스파일
패턴과 함께 일 때 더 유용이번 글에서는 타입에 제약을 주는 where 절의 활용에 대해 알아보자.프로토콜 익스텐션에 where 절을 사용하면, 이 익스텐션이 특정 프로토콜을 준수하는 타입에만 적용될 수 있도록 제약을 줄 수 있다.여러 프로토콜을 제시하고 싶다면, 쉼표
반환 타입에 불명확 타입(Opaque Type)을 사용하면 반환할 타입의 정확한 타입을 알려주지 않은채로 반환하겠다는 의미다.반환 타입 위치에 프로토콜을 쓰면서 앞에 some→ "이 프로토콜을 준수하는 어떤 타입 중에 하나일 것은 분명하다"는 의미 제네릭 : 어떤
오류에 대비하기 위해서 스위프트에서 제공하는 기능프로그램이 오류를 일으켰을 때 이것을 감지하고 회복시키는 일련의 과정. 스위프트에서 오류는 Error라는 빈 프로토콜을 준수하는 타입의 값을 통해 표현된다. 주로 열거형을 사용하고 associatedValue를 통해 부가
참조 타입은 하나의 인스턴스가 참조를 통해 여러 곳에서 접근하기 때문에 언제 메모리에서 해제가 되는지가 중요한 문제이다. 메모리가 해제되지 않을시, 메모리 자원 낭비 및 성능저하로 이어지기 때문. 스위프트는 프로그램의 메모리 사용을 관리하기 위하여 메모리 관리 기법인
프로그래머가 변수에 값을 할당한다던가, 함수의 전달인자로 변수의 값을 전달하는 등 다양한 경우에 코드를 통해 메모리에 접근하게 된다. 메모리 접근 충돌은 이 때 서로 다른 코드에서 동시에 같은 위치의 메모리에 접근할 때 발생한다. 세 조건에 모두 해당하는 메모리 접근이