BAD ACCESS error, хотя свойство установлено на сохранение

Я надеюсь, что кто-то может сказать мне, почему яЯ не прав. Вот фрагмент моего кода:

TimeLogAppDelegate *appDelegate = (TimeLogAppDelegate *)[[UIApplication sharedApplication] delegate];

PickFromListViewController * pl = [[PickFromListViewController alloc] initWithNibName:@"PickList" bundle:nil];
pickList = pl;
[pickList setSearchItems:[appDelegate tableListMutableArray:type ] :NSLocalizedString(type,nil)];
pickList.callingViewController = self;
[pl release];
pickList.responseSelector = [[type lowercaseString] stringByAppendingString: @"Selected:"];
pickList.includeNone = YES;
pickList.includeNew = YES;
[self.navigationController pushViewController:pickList animated:YES];

Как вы видите, я выпускаю pl на полпути, просто чтобы создать проблему. 'PickList» очевидно, является PickFromListViewController и объявлен в заголовке. Я устанавливаю его как свойство (@property (nonatomic, retain) PickFromListViewController * pickList;) и @ @ синтезирую его.

Моя проблема:

после освобождения pl я получаю ошибку BAD ACCESS при доступе к pickList, указывающую на то, что указатель больше не доступен, но я думал, что тот факт, что pickList синтезирован, будет сохраняться до тех пор, пока я не отпущу его в dealloc?

Может кто-нибудь сказать мне, почему я не прав?

Большое спасибо

 Rob Cowell08 сент. 2009 г., 16:45
Разумный вопрос в деталях, но заголовок вопроса не дает понятия о том, что выпереспрашиваю ....
 Chris08 сент. 2009 г., 17:28
Извини & Спасибо - я нене понимаю важность ясности вопроса.

Ответы на вопрос(1)

Решение Вопроса

Настройка вашегоpickList собственность как(nonatomic, retain) применяется только в том случае, если вы получаете доступ к свойству через средство доступа к собственности следующим образом:

self.pickList = P1;

или же

[self setPickList:P1];

Если вы просто назначаете значение переменной-члену:

pickList = P1;

Вы обходите методы доступа к свойству, поэтому нетretain сообщение отправлено

 Chris09 сент. 2009 г., 06:55
Спасибо, что объяснили это и ваше время
 Chris08 сент. 2009 г., 17:32
Большое спасибо. Теперь я вижу, что мне нужно будет вернуться через мой код, чтобы решить эту проблему. Еще одна вещь по этому поводу; мне self.pickList = P1 и pickList = P1 говорят то же самое. Можете ли вы придумать, как я могу увидеть два из этих утверждений, что они значат? (если вы понимаете о чем я :)
 e.James08 сент. 2009 г., 22:51
Я склонен использовать синтаксис квадратной скобки всякий раз, когда ям установка значения свойства. Точечный синтаксис может выглядеть немного чище, но мне легче запомнить этот путь. Когда я вижу var = value, я знаю, чтоДоступ к члену напрямую. Когда я вижу [self setVar: value], я знаю, что средства доступа используются.
 e.James09 сент. 2009 г., 07:19
Нет проблемы. Удачи с вашим кодом :)

Ваш ответ на вопрос