Вы не управляете своей памятью должным образом - вы звоните release
/ autorelease
на какой-то объект больше раз, чем звоните retain
. Убедитесь, что вы следуете всем правилам, изложенным в Руководстве по программированию управления памятью для какао .
0x5633b0 - это просто адрес ячейки памяти, в которой хранится объект. Одна вещь, которую вы можете попытаться сделать, это добавить код к методу init
:
- (void) init
{
if(self == (MyClass*)0x5633b0)
NSLog(@"Allocated object at address 0x5633b0"); // put a breakpoint on this line
// do rest of init...
}
Если у вас есть другие методы init
(например, initWithCoder:
, который вызывается для объектов, созданных из XIB), убедитесь, что этот фрагмент также включен в эти методы. Поместите точку останова на линию NSLog
, а затем посмотрите, когда ее ударили. Обратите внимание, что он может попасть несколько раз, если объект размещается по этому адресу, освобождается, а затем другой объект оказывается перераспределенным по тому же адресу. Последний удар перед аварией - это тот, который вам нужен.