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は、(生成された)プロパティアクセサを使用してプロパティにアクセスしていることを意味します。 代わりにそれらをnilに設定するか、ivarsを直接リリースする必要があります。

[location release]を使用してください。 [self.location release]の代わりに。

または、代わりにself.location = nilを使用します。

関連する問題