2010-12-04 16 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表示您通過(生成的)屬性訪問器訪問屬性。 您應該將它們設置爲零,或者直接釋放ivars。

所以,使用[位置釋放];而不是[self.location release];

或者,也可以使用self.location = nil;