2014-10-28 2 views
0

이 질문은 너무 간단 할 수 있습니다. 그러나 어떤 문서도 찾을 수 없습니다. 이것에 전혀.목적 c에서 사용자 정의 init 목적은 무엇입니까?

사용자 정의 init 등을 작성하는 방법에 관한 자료를 찾을 수 있지만 클래스에 대한 사용자 정의 init을 작성하려는 이유에 대한 간단한 설명을 찾을 수 없습니다. 필요한 이유는 무엇입니까?

- (instancetype)init 
{ 
    self = [super init]; 
    if (self) { 
    <#statements#> 
    } 
    return self; 
} 
+0

NSString을 만드는 경우 문자열의 내용을 지정할 수 없습니까? –

+0

일반적인 [alloc] init no로 NSString 객체를 만드는 방법이 있습니까? 나는이 둘의 차이점을 이해하려고 노력하고 있는데, 왜 필요한지. – giuseppe

+0

'[[NSString alloc] init]'으로 NSString을 생성하면 영원히 빈 문자열이됩니다. 물건을 원하면'[[NSString alloc] initWithSomeStuff ...]'해야합니다. –

답변

0

이는 C++에서 생성자가 필요할 수있는 것과 같은 이유입니다. 그것은 당신의 객체를 초기화하는 것입니다. 예를 들어 캐싱 객체를 작성하는 경우 객체를 파일 이름에 매핑하는 내부 맵이있을 수 있습니다. 다른 객체가 캐시 객체의 메소드를 즉시 호출 할 수 있도록 init 메소드에서 해당 내부 객체를 초기화합니다.

특수 초기화를 수행하지 않으면 구현하지 마십시오.

+0

고맙습니다. – giuseppe

관련 문제