내가 같은 인터페이스가 있다고 가정 누출 : 나는 다른 파일에서이 클래스를 사용하는 경우간단한 문제는
@interface it:NSObject
{
NSString* string;
}
@end
@implement it
-(id)init
{
if(self = [super init]){
self.string = [[NSString alloc]init];
}
}
-(void)dealloc
{
[self.string release];
[super release];
}
@end
을하고 나는이 전화 :
it ait = [[it allow] init];
NSString* anotherString = [[NSString alloc] init];
ait.string = anotherString;
[anotherString release];
윌이 원인 문자열은 메모리 누수의 init 메서드에 할당 된? 문자열이 참조되지 않고 자동 출시되지 않기 때문에. init 메소드에 문자열을 할당하지 않으면 다른 문자열을 할당하기 전에 ait.string을 호출 할 때 어떤 일이 발생합니까?
또한, dealloc에서 문자열 (또는'[string release];하지만'* [self.string release];가 아닌)을 해제하려면'self.string = nil;'이어야합니다. – DarkDust
대부분의 경우 문자열에 대한 복사 속성을 유지하고 유지하지 않아야합니다. – Eiko