//retain : 컴파일러에게 이 속성을 통해 할당하는 모든 객체에게 retain 메시지를 보내라고 알려준다. retain은 메모리에 할당된 특정 객체를 참조하는 것을 의미한다. 할당된 객체는 리테인 카운트 라는 것을 가지고 있으며,
//리테인 카운트는 객체 자신이 리테인된 횟수를 나타낸다. 예를 들어 특정 객체의 릴리즈를 호출했다고 해서 그 객체가 메모리에서 즉시 소멸되는 것은 아니다. 객체가 리테인 되면 리테인 카운트는 1이 증가하고, 릴리즈 되면 리테인 카운트는 1이
//감소한다. 객체는 리테인 카운트가 0이 되는 순간 메모리에서 해제 된다. 특정 객체가 생성되면 그 객체는 기본적으로 리테인 카운트 1을 가진다. 이러한 방법은 오브젝티브 C에서 사용하는 독특한 메모리 관리 기법의 하나이다.
//즉, 이는 프로퍼티로 선언된 인스턴스 변수가 여전히 사용되고 있는 중에 메모리에서 삭제되는 것을 막아준다. Setter의 기본 설정인 assign이 가비지 콜렉션을 사용하도록 하는 것이기 때문에 이러한 방법은 꼭 필요한 것이다.
//nonatomic : 접근자 메소드와 변경자 메소드가 생성되는 방법을 바꾼다. 기본적으로 접근자와 변경자는 멀티스레드 프로그램을 작성할 때 도움이 될 수 있는 추가적인 코드들과 함께 생성된다.
//이를 없애기 위해 atomic이 아닌 nonatomic으로 선언하였다.
@property (nonatomic, retain) IBOutlet UILabel *statusText;
- (IBAction)buttonPressed:(id)sender;
someObject.foo = myVar; //이런식으로 사용하는 것도 setter를 주로 쓰던 나에게는 Property의 도움으로 새롭게 공부하는 문법인데 이걸
[someObject setFoo:myVar]; //으로 쓴단다. ㅋㅋㅋㅋ
Objective C 로 이름을 새롭게 적고 공부하는 걸 적어가려는 것은 이 이유다.