2012-01-15 8 views
0

これは異常です..私のアプリは有料版のアプリを作るためにターゲットを複製する前にうまくいきました.. UIViewControllerを表示したいとき、ロードされ、表示されますが、アプリケーションがクラッシュしますデバイスログにこのエラーが表示されます。アプリケーションクラッシュon presentmodalviewcontroller

Thread 0 name: Dispatch queue: com.apple.main-thread 
Thread 0 Crashed: 
0 libobjc.A.dylib     0x341c2fbc objc_msgSend + 16 
1 UIKit       0x3735fdfe -[UINavigationController topViewController] + 46 
2 UIKit       0x37395ae4 -[UINavigationController viewDidDisappear:] + 80 
3 UIKit       0x373636ae -[UIViewController _setViewAppearState:isAnimating:] + 138 
4 UIKit       0x373beaea -[UIViewController _endAppearanceTransition:] + 258 
5 UIKit       0x373ecec8 -[UIViewController endAppearanceTransition] + 16 
6 UIKit       0x3741cf04 -[UIWindowController transitionViewDidComplete:fromView:toView:] + 1404 
7 UIKit       0x373bc934 -[UITransitionView notifyDidCompleteTransition:] + 140 
8 UIKit       0x373bc7b8 -[UITransitionView _didCompleteTransition:] + 896 
9 UIKit       0x37336814 -[UIViewAnimationState sendDelegateAnimationDidStop:finished:] + 464 
10 UIKit       0x3733bfb2 -[UIViewAnimationState animationDidStop:finished:] + 46 
11 QuartzCore      0x34a8dba0 CA::Layer::run_animation_callbacks(void*) + 196 
12 libdispatch.dylib    0x36bace86 _dispatch_main_queue_callback_4CF$VARIANT$up + 190 
13 CoreFoundation     0x33f4b2d6 __CFRunLoopRun + 1262 
14 CoreFoundation     0x33ece4d6 CFRunLoopRunSpecific + 294 
15 CoreFoundation     0x33ece39e CFRunLoopRunInMode + 98 
16 GraphicsServices    0x30752fc6 GSEventRunModal + 150 
17 UIKit       0x3734f73c UIApplicationMain + 1084 
18 MyApp      0x00002674 main (main.m:15) 
19 MyApp      0x00002624 start + 32 

ここで私のエラー誰でも助けてくれますか?

+0

Xcodeはゾンビを見つけるのに大いに役立ちます。 http://stackoverflow.com/questions/2190227/how-do-i-setup-nszombieenabled-in-xcode-4/8863063#8863063これは、特定のオブジェクトの保持カウントが変更されたときに表示されます – Besi

答えて

1

これはゾンビオブジェクトのアクセスのように見えます。ターゲットを単独で複製するとこの問題が発生する理由はわかりませんが、ゾンビの計測器でシミュレートしてアプリをプロファイリングしてみましたか?

編集:

はい。さて、あなたは何が起こっているのか知っています。繰り返しますが、ターゲットを複製するだけでは、これが起こる可能性があると想像するのは難しいです。保持されるべきオブジェクトは保持されません。これにはいくつもの原因がありますが、潜在的な原因の1つは、retainまたはcopyと宣言されるべき@プロパティですが、assignと宣言されています。ゾンビの計器は、さらにあなたを助けることができます:

そのエラーメッセージの隣に、円で小さな矢印があります。このアイコンをクリックすると、そのオブジェクトを保持してリリースしたすべてのものを表示する詳細ビューに移動します。これは参考になるかもしれませんが、そうでないかもしれません。問題が何かがオブジェクトを "オーバーリレース"している場合は、リストから知ることができるかもしれませんが、問題を保持する必要があるものがリストに表示されない。

このリストには、オブジェクトの論理的な「所有者」(または論理所有者に渡す)が存在するため、オブジェクトの作成者が表示されます。私は自分のプロジェクトを見て、問題のオブジェクトの意図された所有権について考えます。誰がこのオブジェクトを所有すべきですか?なぜ彼らはそれを保持していないのですか?

まだココアのメモリ管理のスピードが上がっている場合は、Appleのガイドをお読みください。Advanced Memory Management Programming Guideゾンビオブジェクトのアクセスを修正することは、Objective-C開発者のための一節です。プラットフォームに固執すると、間違いなくあなたのテクニックを磨く機会が増えます。

自動参照カウント(ARC)の使用を検討することもできます。それはあなたがこのようなことについて考える必要がないようにすることを意味し、実際にはかなりうまく動作します。

EDIT 2:

はちょうど私に発生しました:設定は何とかオフになってしまったこと、それは可能です、あなたは、元のターゲットでARCを使用していた、あなたはターゲットを複製したときに?それは確かにそれを説明します。

+0

完了!このエラーが表示されます。Objective-Cメッセージがアドレス0x7848500の割り当て解除されたオブジェクト(ゾンビ)に送信されました。 – JackTurky

+0

問題は何ですか? – JackTurky

関連する問題