목록분류 전체보기 (179)
study record
클로저 Closure 클로저를 잘 이해해야 스위프트의 함수형 프로그래밍 패러다임 스타일을 좀 더 명확하게 이해할 수 있다. 스위프트의 클로저는 다른 프로그래밍 언어의 람다와 유사하다. 클로저는 일정 기능을 하는 코드를 하나의 블록으로 모아놓은 것을 말한다. 클로저는 변수나 상수가 선언된 위치에서 참조를 획득하고 저장할 수 있다. 이를 변수나 상수의 클로징이라고 하며 여기서 클로저가 착안되었다. 클로저의 몇 가지 모양 중 하나가 함수이다. 클로저는 세가지 형태가 있다. 이름이 있으면서 어떤 값도 획득하지 않는 전역함수의 형태 이름이 있으면서 다른 함수 내부의 값을 획득할 수 있는 중첩된 함수의 형태 이름이 없고 주변 문맥에 따라 값을 획득할 수 있는 축약 문법으로 작성한 형태 클로저의 다양한 표현방법 클로..
인스턴스 생성 초기화 과정은 새로운 인스턴스를 사용하기 위하여 저장 프로퍼티의 초깃값을 설정하는 등의 일을 한다. 이니셜라이저를 정의하면 초기화 과정을 직접 구현할 수 있다. 이렇게 구현된 이니셜라이저는 새로운 인스턴스를 생성할 수 있는 특별한 메서드가 된다. 스위프트의 이니셜라이저는 반환 값이 없다. 그저 초기화하는 용도이다. 이니셜라이저는 func 키워드를 사용하지 않고 오로지 init 키워드를 사용하여 이니셜라이저 메서드임을 표현한다. init 메서드는 클래스, 구조체, 열거형 등의 구현부에 위치한다. 다만 클래스의 지정 이니셜라이저는 익스텐션에서 구현해줄 수 없다. class SomeClass { init() { // 초기화할 때 필요한 코드 } } struct SomeStruct { init()..
프로퍼티 프로퍼티는 크게 저장 프로퍼티와 연산 프로퍼티, 타입 프로퍼티로 나눌 수 있다. 저장 프로퍼티는 인스턴스의 변수 또는 상수를 의미한다. 구조체와 클래스에서만 사용할 수 있다. 연산 프로퍼티는 값을 저장한 것이 아니라 특정 연산을 실행한 결괏값을 의미한다. 클래스, 구조체, 열거형에서 쓰일 수 있다. 저장 프로퍼티와 연산 프로퍼티는 특정 타입의 인스턴스에 사용되는 것을 뜻하지만 특정 타입에 사용되는 프로퍼티가 있다. → 타입 프로퍼티 저장 프로퍼티 클래스 또는 구조체의 인스턴스와 연관된 값을 저장한다. 구조체는 프로퍼티에 맞는 이니셜라이저를 자동으로 제공한다. 전달인자로 초깃값을 넘긴다. 초깃값을 이미 할당했다면 넘길 필요는 없다. 클래스는 저장 프로퍼티에 초깃값을 지정하거나 사용자 정의 이니셜라..
비슷한 점 값을 저장하기 위해 프로퍼티를 정의한다. 기능 실행을 위해 메서드를 정의한다. 초기화될 때의 상태를 지정하기 위해 이니셜라이저를 정의할 수 있다. 다른 점 구조체는 상속할 수 없다. 타입캐스팅은 클래스의 인스턴스만 가능하다. 디이니셜라이저는 클래스의 인스턴스에만 활용할 수 있다. (디이니셜라이저란 클래스의 인스턴스가 참조할 필요가 없을 때 메모리에서 해제되기 전 호출되는 것이다. (deinit 메소드)) 참조 횟수 계산은 클래스의 인스턴스에만 적용된다. 가장 큰 차이점은 클래스는 참조타입, 구조체는 값 타입이라는 점이다. 값 타입과 참조 타입 두 타입의 큰 차이는 '무엇이 전달되느냐'이다. 함수의 전달인자가 값 타입일 때에는 전달될 값이 복사되어 전달된다. 전달인자가 참조타입일 때에는 복사하지..