2010-12-04 8 views
0

작은 클래스를 사용하여 디스크에 사용자 설정을 유지하려고합니다. 누수 도구를 실행할 때 아래의 할당에 메모리가 누출되었다고합니다. 내가의 dealloc에서 그들을 놓으면, 악기는 최대 종료하지만 응용 프로그램이 충돌 시작 (overreleased 객체?)인스트루먼트에서 decodeObjectForKey의 메모리 누수가 발생했습니다.

@synthesize location,address; 

// Decode an object from an archive 
- (id)initWithCoder:(NSCoder *)coder 
{ 
    //location & address are defined like 
    //@property(nonatomic, retain) NSString* location 
    self.location = [coder decodeObjectForKey:@"location"]; 
    self.address = [coder decodeObjectForKey:@"address"]; 

    return self; 
} 

//If I uncomment below lines, Instruments is happy but the app immediately crashes (I am guessing over released objects ?) 
- (void)dealloc { 
    [super dealloc]; 
/* 
    [self.location release]; 
    [self.address release]; 
*/ 
} 

답변

0

당신은의 dealloc에서 그들을 해제해야합니다.

self.location은 (생성 된) 속성 접근자를 통해 속성에 액세스한다는 것을 의미합니다. 대신에 그들을 nil로 설정하거나 ivars를 직접 해제해야합니다.

따라서 [위치 릴리스]를 사용하십시오. 대신 [self.location release];

또는 self.location = nil을 사용하십시오.

관련 문제