0

次の状況: ドキュメント ベースのアプリがあります。デフォルトでは、アプリを開くと、画面の上部にメニューだけが表示されます。それから file->new を押すと、まったく新しい document.xib インターフェイスが開きます。メインPCで問題なく動いています。しかし、10.6.8 を実行しているセカンダリ PC では、実行するとすぐにアプリがクラッシュします。(コードは適切なターゲットでコンパイルされます...)

上部にメイン メニューが表示される前に、このアプリケーションがクラッシュします。クラッシュの原因はドキュメントの xib ファイル内にあるのでしょうか? または、ドキュメント パーツの外側にあるコード内にある可能性が最も高いでしょうか。私が言いたいのは、コードはアプリケーションの起動時に完全にチェックされているのか、それとも原因となっているコードに到達したときにクラッシュを引き起こすだけなのかということです。

ありがとう

編集

Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000000
Crashed Thread: 0 Dispatch queue: com.apple.main-thread

Thread 0 Crashed: Dispatch queue: com.apple.main-thread
0 ??? 000000000000000000 0 + 0
1 com.apple.AppKit 0x0000000100def22e -[NSCustomObject nibInstantiate] + 416
2 com.apple.AppKit 0x0000000100def01b -[NSIBObjectData instantiateObject:] + 259
3 com.apple.AppKit 0x0000000100dee406 -[NSIBObjectData nibInstantiateWithOwner:topLevelObjects:] + 336
4 com.apple.AppKit 0x0000000100deca91 loadNib + 226
5 com.apple.AppKit 0x0000000100debfa1 +[NSBundle(NSNibLoading)_loadNibFile:nameTable:withZone:ownerBundle:] + 248
6 com.apple.AppKit 0x0000000100debdd9 +[NSBundle(NSNibLoading) loadNibNamed:owner:] + 326
7 com.apple.AppKit 0x0000000100de935b NSApplicationMain + 279
8 mad-sharky.com.Stockuploader 0x0000000100001194 0x100000000 + 4500
4

2 に答える 2

1

問題は XIB ファイルにあるのではなく、そのファイル内のオブジェクトの 1 つが正しくインスタンス化されていないことにあります。オブジェクトに関する何かが原因で、-initWithCoder:メソッドが失敗しています。おそらく、上記のメソッドで super を呼び出しておらず、単に許可されていない self を返しているようです。

もう1つの可能性は、「ゴーストアウトレット」があることです。IBOutlet が作成されてリンクされると、それを宣言するコードの一部が削除され、IB がアウトレットのリンクを解除せず、NSCoder が nil アウトレットのアーカイブを解除しようとすることがあります。

于 2013-03-17T15:03:23.463 に答える
0

問題が見つかりました。ここにあります:

ここに画像の説明を入力

今では問題なく動作します!

于 2013-03-24T17:14:12.727 に答える