я використовую UIActionSheet
у моєму проекті:
self.actionSheet = [[[UIActionSheet alloc] initWithTitle:nil] autorelease];
Це об'єкт:
@property (nonatomic, retain) UIActionSheet *actionSheet;
І після UIActionSheet
відпускають я хочу звільнити його і зробити це nil
з цим кодом:
[self.actionSheet release];
self.actionSheet = nil;
Але коли я це роблю, програма збої, будь-яка ідея, чому це відбувається?
Відповіді:
2 для відповіді № 1Зателефонувати вручну release
це проблема. Використовуючи синтезований сеттер властивості, він правильно видає попередній об'єкт.
Вам слід або змінити свій код на:
self.actionSheet = nil;
або, якщо ви віддаєте перевагу вручну випустити, встановіть основну змінну індексу до nil
, так:
[self.actionSheet release];
_actionSheet = nil;
Як показано в коментарях, ви повинні перенести свій код в ARC. Якщо ви не можете перемістити весь код, ви все ще можете перемістити його більшу частину, а лише зберігати "проблемний" код у MRC.