저는 2 년 동안 종교적으로 그렇게 해왔습니다. [super init...]
방법을 호출 한 후 self
의 타당성을 검사 : this question 멋지게 요약으로init 메소드에서 (self)를 확인하는 이유는 무엇입니까?
self = [super init];
if (self != nil) {
// initialize
}
return self;
당신은 다양한 방법으로이 작업을 수행 할 수 있지만, 그 질문이 구문에 관한 것입니다, 광산 개념에 관한 것입니다.
최근에 Objective-C를 배우는 동료로부터 질문을 받았는데 "왜 내가 자기 존재에 대해 테스트해야합니까? 그것이 거기에 있다는 것이 명백하지 않습니까?" 그리고 나의 짧은 대답은 "잘못되었다. 예, 실패 할 수있는 경우가있다. 그래서 그것이 이유 다." 그러나 오랜 대답은 어디서나 테스트를하는 이유는 이해할 수 없다는 것입니다. 실패 할 수있는 인스턴스는 매우 드뭅니다. Apple's reference guide은 파일을 사용하여 초기화하거나 싱글 톤을 처리 할 때처럼 특정 사례에 대해 알려줍니다. 그러나이 소리는 [super init]
이 작동해야한다는 규칙에 대한 매우 드문 예외입니다.
그럼 내 질문은 다음과 같습니다. 왜 우리는 항상 자기의 타당성을 테스트합니까? 우리는 어디에서나 그 예외를 잡기 위해 그것을 구현하고 있습니까? 왜 if (self)
전체를 건너 뛰고 성공할 확률이 100 % (또는 결코 그렇지 않은 경우) 인 경우 객체를 초기화해야합니까?
P.S. 나는이 질문이 너무 기본적인 것이기 때문에 속은 사람이어야한다는 것을 알지만, 나의 검색 질의는 초기화 문법에 대해 많은 다른 질문을 가지고있다. Dupe 링크는 높이 평가됩니다.
[Object-C에서 self = \ [super init \]가 nil이 아닌지 확인해야하는 이유는 무엇입니까?] (http://stackoverflow.com/questions/1287950/in-objective-c-why- should-i-check-if-self-super-init-is-not-nil) – JeremyP