次のコードを使用して、アナライザーはsetMyDictセレクター呼び出しを潜在的なリークとしてマークし、deallocで、「参照カウントの誤った減少は、この時点では呼び出し元によって所有されていません」と表示します。
- (id)init {
if (self = [super init]) {
[self setMyDict:[[NSMutableDictionary alloc] init]];
}
return self;
}
- (void)dealloc {
[[self myDict] release];
[super dealloc];
}
@synthesize myDict = _myDict;
ぜんぜんわかりません。alloc initを使用すると、オブジェクトは保持カウントを1つ増やし、ポインターは合成されたプロパティを介して_myDictに格納されると思いました。代わりにこのコードを使用する場合
- (id)init {
if (self = [super init]) {
_myDict = [[NSMutableDictionary alloc] init];
}
return self;
}
- (void)dealloc {
[_myDict release];
[super dealloc];
}
アナライザーは文句を言いません。私は何が欠けていますか?