2008-09-15 6 views

答えて

5

あなたが正しく保持していないオブジェクトにアクセスしようとしているときに、そのオブジェクトの有効なコピーを指していないか、

-3

これが考えられる理由の1つです。初期化されておらず、メッセージがnilで呼び出されているIBOutletオブジェクトがあります。スタックトレースを使用して、エラーを見つけるためにあなたのコードをステップ実行する必要があります役に立たないので

#0 0x90a594c7 in objc_msgSend 
#1 0xbffff7b8 in ?? 
#2 0x932899d8 in loadNib 
#3 0x932893d9 in +[NSBundle(NSNibLoading) _loadNibFile:nameTable:withZone:ownerBundle:] 
#4 0x9328903a in +[NSBundle(NSNibLoading) loadNibFile:externalNameTable:withZone:] 
#5 0x93288f7c in +[NSBundle(NSNibLoading) loadNibNamed:owner:] 
#6 0x93288cc3 in NSApplicationMain 
#7 0x00009f80 in main at main.mm:17 

:スタックトレースは次のようになります。何らかの理由で実行の早い段階でブレークポイントを設定できない場合は、Debugger()をいくつか挿入してみてください。デバッガに侵入するコール。

+0

nilへのメッセージは、Objective-Cではエラーではありません。 – mmalc

0

追加する:元に戻すことの失敗の主な理由は、「自己復帰」を忘れることです。カスタムクラスの初めからそれは多くの痛い:(

0

コンソールログ(アプリケーション/ユーティリティ/ Console.app)をチェックします。プログラムがクラッシュしたときにブレークポイントを早期に置いて、起動時にオブジェクトを分析してgdbでpoとprintを使用することをお勧めします。起動時に初期設定に何か問題がありますが、クラッシュする前に役立つエラーメッセージを書き出すことがよくあります。

2

これは通常、メモリ管理エラーを示しています。

すべてのアウトレットの宣言は、ベストプラクティスに従っていることを確認してください:

@interface MyClass : MySuperclass { 
    UIClass *myOutlet; 
} 
@property (nonatomic, retain) IBOutlet UIClass *myOutlet; 
@end 

このフォーマットを使用すると、任意のスーパークラスを持つ任意のプラットフォーム上のメモリ管理権を取得することを保証します。

チェック任意のawakeFromNib方法はないの上に放出など

1

オブジェクトXCodeの4 EXC_BAD_ACCESSの例外を診断するための最も効果的な方法で、古いスレッドへの新しい答えは...楽器を使用することです、あなたがしていることを保証するために、あなたのアプリをプロファイルする(XCodeからProduct/Profileをクリックしてゾンビを選択する)。これは、割り当てられていないオブジェクトに送信されたメッセージを識別するのに役立ちます。

関連する問題