이니셜라이저 – Swift

Swift의 클래스와 구조체, enum 객체들은 사용하기 전에 반드시 초기화되어야 한다. 그러면 초기화(initialization)이란 무엇인가? 객체의 생성 자체를 초기화과정에 포함시키는 관점과 그렇지 않은 관점이 있지만, 여기서는 “객체를 만들어서 사용가능한 상태로 준비하는 일”이라고 보자. let foo = Foo() 와 같이 특정한 타입의 인스턴스를 생성하는 구문을 실행했을 때 저 아래(?)에서 벌어지는 과정은 다음과 같다.

이니셜라이저 – Swift 더보기

프로퍼티 상속 파고들기 – Swift

Swift의 클래스 상속과 관련하여 이니셜라이저의 동작 규칙은 안정성이라는 측면을 아주 중요하게 여기고 있어서 몇 가지 규칙이 강제되고 있다. 이 규칙은 컴파일러에 의해서 강제되고 있기 때문에 이니셜라이저를 작성할 때 주의를 기울여야 하고, 그렇지 않으면 언뜻 보기에 아무런 문제가 없는 것 같은 코드가 컴파일이 되지 않는 경우가 많다.

이니셜라이저와 더불어서 프로퍼티 역시 작성할 때 주의해야 할 부분이 몇 가지 있다. 문제는 이니셜라이저와 마찬가지로 클래스를 상속하는 상황에서 프로퍼티 상속과 관련되는 케이스가 많아지고 헷갈리는 상황을 제법 접할 수 있게 된다는 것이다. 이번 글에서는 프로퍼티의 상속에 관한 여러 사례들을 검토해보도록 하자.

프로퍼티 상속 파고들기 – Swift 더보기

Objective-C의 선언 프로퍼티 (Declared Property)에 대해

Objective-C의 객체 인스턴스에 어떠한 변수 값을 포함하고자 한다면 클래스 내에 인스턴스 변수를 선언하고, 여기에 값을 저장할 수 있다. (흔히 애플 문서등에서는 이런 인스턴스 변수를 ivar라 한다.)

기본적으로 객체의 내부에서 선언되는 인스턴스 변수는 private하며 객체의 외부에서는 내부의 인스턴스 변수값에 액세스하는 것이 차단된다. 따라서 객체의 외부에서 인스턴스 변수의 값을 읽거나 쓰기 위해서는 클래스가 해당 인스턴스를 읽게하거나, 쓰게 해주는 API를 제공해야 한다. 이렇게 객체가 자신의 내부 속성값에 대해 읽거나 쓰게 하기 위해 제공하는 메소드를 접근자(accessor) 메소드라고 한다.

Objective-C의 선언 프로퍼티 (Declared Property)에 대해 더보기