С помощью следующего кода анализатор помечает вызов селектора setMyDict как потенциальную утечку, а в процессе освобождения он сообщает: «Некорректное уменьшение счетчика ссылок на данный момент не принадлежит вызывающей стороне».
- (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 объект увеличивает счетчик удержания на единицу, а указатель сохраняется в _myDict через синтезируемое свойство. Если я использую этот код вместо
- (id)init {
if (self = [super init]) {
_myDict = [[NSMutableDictionary alloc] init];
}
return self;
}
- (void)dealloc {
[_myDict release];
[super dealloc];
}
Анализатор не жалуется. Что мне не хватает?