/ / UIActionSheet release after dismiss - ios, object-c, uiactionsheet

Випуск UIActionSheet після звільнення, об'єктивно-c, uiapageheet

я використовую 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.