2011-08-15 12 views
-1

これについては既に多くの質問がありますが、私はそれらをフォローしようとしましたが、問題の内容はまだ解決できません。iOSメモリ管理の問題

私は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__() 

私はいつオブジェクトをリリースするべきかについて迷っているかもしれないと思う。 を使用し、deallocメソッドですべてのプロパティをリリースしたすべてのメソッドの最後に[オブジェクトの解放]を試みました。

誰でも私に何をする必要があるかについてのヒントを教えてもらえますか?必要に応じてさらにコードを含めることができます。

+0

ポスト。 。コード。おかげさまで – akashivskyy

答えて

0

公開されているアプリケーションに文字列があります。 autoreleasepoolがリリースされたときに問題になるので、あなたは誤って自動リリースされたオブジェクトをリリースしています。私にできることすべてはあなたのコード内の問題を探してくださいするためのパターンとして、それを提供しているすべての関連するコードがなければ

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 

:ここでは、これを引き起こす可能性の例です。

+0

私はそのパターンを見つけることができるかどうかを見ていきます。デバッガにクラッシュの原因となっている文字列を表示させる方法がありますか? –

+0

うーん、私はこの方法でこれ以前の上で使用した場合: 'NSStringの* thisChar = [[NSStringのののalloc] initWithFormat:@ ""];' は、私はその後、使用することはでき 'thisChar = [NSStringのstringWithFormat: @ "%C"、tempChar]; ' 最後 でこれを使用する前に、' [thisCharリリース]; ' それともそれが問題だろうか? –

+0

それはあなたの問題でしょう!再割り当てする前に '[thisCar release];'を移動するか、リリース全体を削除し、 'stringWithFormat:'のみを使用してallocを呼び出さないようにする必要があります。 – Joe