в ARC на iOS 5, вы можете увидеть, кто вызвал релиз? - PullRequest
4 голосов
/ 10 февраля 2012

В моем проекте iOS 5 с включенным ARC один из моих объектов преждевременно освобождается, поэтому, когда я пытаюсь добраться до него позже, я получаю нулевой указатель.До ARC я бы просто переопределил release следующим образом:

-(oneway void)release {
    NSLog(@"-1");    //breakpoint goes here
    [super release];
}

, затем добавил точку останова в NSLog и проверил стек вызовов, чтобы увидеть, кто вызывает выпуск.

Какузнать, кто "назвал" релиз по ARC?(«Вызванный» может быть неправильным словом, так как компилятор вставляет вызовы релиза, так что я имею в виду «где находится строка, в которую компилятор вставил вызов релиза?»).

1 Ответ

8 голосов
/ 10 февраля 2012

Если вам нужно увидеть, где происходит сохранение, разблокирование и автовыделение для объекта, использующего инструменты:

Запустить на инструментах, в разделе «Выделения» включить «Счетчик ссылок записи» (необходимо остановить запись, чтобы установить параметр).Заставьте код проблемы запуститься, остановите запись, найдите интересующий вас ивар, просмотрите детали, и вы сможете увидеть, где произошли все сохранения, выпуски и автоматические выпуски.

enter image description here

...