когда вы используете свойство и присваиваете ему заданные атрибуты, определяют, увеличивается ли retainCount, если вы присваиваете свойству.В вашем случае вы указали «retain
», что означает, что функция setter, которая обрабатывает присвоение вашему свойству, автоматически увеличивает счет сохранения для объекта.
Однако, когда вы пишете
addButton = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
target:self action:@selector(btnNavAddPressed:)];
вы создаете объект с уже сохраненным счетчиком == 1, поэтому при назначении у него будет сохраняться счетчик 2. Правильный способ сделать это - создать временную переменную и создать объект, а затем назначить временную переменную свойствувыпуская темп.переменная:
UIBarButtonItem* tmp = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
target:self action:@selector(btnNavAddPressed:)];
self.addButton = tmp;
[tmp release];
конечно, я бы рекомендовал более описательное имя, чем 'temp' в качестве имени переменной.