Диагностическая ошибка: «релиз отправлен на освобожденный объект» - PullRequest
0 голосов
/ 25 апреля 2011

Я получил это сообщение об ошибке:

message [CFString release] sent to deallocated object at 0x........

Как узнать, какая строка вызвала эту проблему? Могу ли я выяснить, какой CFString использует отладчик?

Ответы [ 3 ]

3 голосов
/ 25 апреля 2011

Если вы используете XCode 4, используйте инструмент Zombie (Build and Profile).Когда появляется это сообщение, вы можете нажать стрелку, чтобы получить список, где строка была сохранена и освобождена.

1 голос
/ 25 апреля 2011

См. http://www.cocoadev.com/index.pl?NSZombieEnabled, чтобы установить точку останова и просмотреть стек, чтобы найти оператор освобождения, где он произошел.

0 голосов
/ 25 апреля 2011

Во-первых, вы можете попробовать найти свой код для функций alloc / dealloc и сосчитать его.
Это было как " count alloc == count dealloc ".
Второй шагпоищите какую-нибудь конструкцию:

NSString *myString = [NSString stringWith...]; // Auto alloc/init with content
[myString release]; // Release before use
NSLog(@"%@", myString); // Use after release

или попробуйте отладку с NSLog(%"retain count :%d", [myString retainCount]);

...