2013-03-11 3 views
0

Я сделал всплывающее окно с UIButton на нем, которое закрывает представление. Всякий раз, когда я ставлю на кнопку, программа завершает работу с этим сообщением: [MTPopupWindow performSelector:withObject:withObject:]: message sent to deallocated instance 0x84675f0 Вот header file и source file использовать класс, я использую эту строку кода:Ошибка: сообщение отправлено на освобожденный экземпляр

[MTPopupWindow showWindowWithContent:@"Some text here" insideView:self.view]; 

Я думал, что там было что-то не так с deallocating мой объекты слишком скоро, но так как я использую ARC Я не уверен, что вызывает эту проблему. Я думаю, проблема в данной строке кода:

[self.closeBtn addTarget:self action:@selector(closePopupWindow) forControlEvents:UIControlEventTouchUpInside]; 

Но я не вижу в этом ничего плохого.

ответ

1

Вы должны знать, что была проблема, когда вы писали это:

// Cast to void because we don't use the result (otherwise compiler warning) 

Поскольку вы не используете результат, ARC полагает, что это бесплатно, чтобы вставить релиз вашего объекта после этой строки, которые означает, что объект рано освобождается.

Существует несколько способов обойти это; взгляните на такие вещи, как NS_RETURNS_RETAINED или у вас есть вызывающий объект вашего всплывающего окна.

+0

Хорошо, не могли бы вы дать мне небольшой пример кода? – Shinonuma

+0

Я не могу найти что-нибудь полезное из NS_RETURNS_RETAINED. Можете ли вы привести мне пример того, как я могу решить эту проблему? – Shinonuma

Смежные вопросы