Проблема управления памятью iOS - PullRequest
0 голосов
/ 16 августа 2011

Я знаю, что с этим уже связано много вопросов, и я пытался ответить на них, но все еще не могу понять, в чем проблема.

Я включил NSZombiesEnabled, иЯ получаю сообщение об ошибке:

2011-08-15 23:13:12.368 appName[3926:207] *** -[CFString release]: message sent to deallocated instance 0x4cf4570

Если после ошибки набрать bt , я получу следующую трассировку стека:

#0  0x00f92657 in ___forwarding___ ()
#1  0x00f92522 in __forwarding_prep_0___ ()
#2  0x00f3804c in CFRelease ()
#3  0x00f5d18d in _CFAutoreleasePoolPop ()
#4  0x007a53eb in -[NSAutoreleasePool release] ()
#5  0x0004e3ee in _UIApplicationHandleEvent ()
#6  0x0125a992 in PurpleEventCallback ()
#7  0x01002944 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ ()
#8  0x00f62cf7 in __CFRunLoopDoSource1 ()
#9  0x00f5ff83 in __CFRunLoopRun ()
#10 0x00f5f840 in CFRunLoopRunSpecific ()
#11 0x00f5f761 in CFRunLoopRunInMode ()
#12 0x012591c4 in GSEventRunModal ()
#13 0x01259289 in GSEventRun ()
#14 0x00051c93 in UIApplicationMain ()
#15 0x00002739 in main (argc=1, argv=0xbfffefd8) at main.m:14

Я предполагаю эту строкуобъясняет проблему, но я действительно не уверен:

#7  0x01002944 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ ()

Я думаю, что могу заблудиться относительно того, когда мне следует выпускать объекты.Я пытался сделать [выпуск объекта] в конце каждого метода, который использует alloc , а затем в методе dealloc я выпустил все свойства для этого класса.

Что мне нужно сделать?

1 Ответ

0 голосов
/ 16 августа 2011

В вашем приложении есть строка, которую вы переиздали. Так как при выпуске авто-релиза возникает проблема, вы случайно выпускаете автоматически выпущенный объект. Вот пример того, что может вызвать это:

NSString *autoString = [NSString stringWithFormat:@"A formatted string! %d", 0];

//use string

[autoString release];//This will cause a crash about the same place your crash is

Без какого-либо соответствующего кода все, что я могу сделать, это предложить этот шаблон для поиска проблем в вашем коде.

...