내가 읽은 거의 모든 책에서 나는 포인터를 통해 이런 식으로 초기화되는 것을 보았습니다. 내가 초기화하려는 클래스 변수 NSString * myString이 있다고 가정 해보십시오. 나는 거의 항상 다음과 같은 방법으로 이것을 보게 될 것입니다.왜 이런 식으로 포인터를 초기화합니까?
-(id)init {
if (self = [super init]) {
NSString *tempString = [[NSString alloc] init];
self.myString = tempString;
[tempString release];
}
return self;
}
왜 나는 다음을 할 수 없습니까? 여분의 tempString 이제까지 처음부터 필요한 이유
-(id)init {
if (self = [super init]) {
self.myString = [[NSString alloc] init];
}
return self;
}
나는 표시되지 않습니다,하지만 난 메모리 관리와 함께 여기에 뭔가를 누락 될 수 있습니다. 나는 받아 들일만한 일을하고 싶은가 또는 어떤 종류의 유출을 일으킬 것인가? developer.apple.com에서 Memory Management Guide를 읽었으며 뭔가를 놓치지 않으면 차이점을 알 수 없습니다.
자동 회수 기능이 없으면 마지막에 보유 개수가 2입니까? – Rob
넵, alloc의 경우 '+ 1'이고 보유 된 속성의 경우 '+ 1'입니다. –
완벽한! 덕분에 완전한 감각을 갖습니다 ... – Rob