exc_bad_access on Simple iPhoneアプリの起動時
-
19-09-2019 - |
質問
バックグラウンド:
CS193Pコースで「Hellopoly」割り当てを試しています。 .xibファイルとカスタムコントローラークラスを作成しました。
私は方法を肉付けしていません - 私はIBがクラスファイルをXcodeに書き込むことしか許可していません。
問題:
アプリケーションを起動するたびに、それは爆撃します。 GDBを実行すると、EXC_BAD_ACCESSエラーが表示されます。これは、私がメモリに存在しないものにアクセスしていることを意味しますか?私が持っているのは、IBとメインによって作成されたデフォルトファイルだけです。これ以上何もない。
投稿されたコードソリューションをチェックして、何が違うのかを確認しましたが、次に何を試すべきかわかりません。スタートアップで毎回アプリがクラッシュするとき、通常は何をチェックしますか?
スタックトレースは、uiapplicationmainを作成するときにmain.mで発生していることを明らかにします。つまり、アプリケーションの代表者に到達しないことを意味します。
これがトレースです:
Program received signal: “EXC_BAD_ACCESS”.
(gdb) where
#0 0x01b70d45 in CFHash ()
#1 0x01b741cf in __CFDictionaryFindBuckets1b ()
#2 0x01b72b0a in CFDictionaryGetValue ()
#3 0x00450535 in -[UIProxyObject initWithCoder:] ()
#4 0x0133886e in UINibDecoderDecodeObjectForValue ()
#5 0x013398c2 in -[UINibDecoder decodeObjectForKey:] ()
#6 0x00450b35 in -[UIRuntimeConnection initWithCoder:] ()
#7 0x0045101c in -[UIRuntimeEventConnection initWithCoder:] ()
#8 0x0133886e in UINibDecoderDecodeObjectForValue ()
#9 0x0133820a in UINibDecoderDecodeObjectForValue ()
#10 0x013398c2 in -[UINibDecoder decodeObjectForKey:] ()
#11 0x0044feab in -[UINib instantiateWithOptions:owner:loadingResourcesFromBundle:] ()
#12 0x00451fcb in -[NSBundle(NSBundleAdditions) loadNibNamed:owner:options:] ()
#13 0x002910a6 in -[UIApplication _loadMainNibFile] ()
#14 0x0029a82a in -[UIApplication _runWithURL:sourceBundleID:] ()
#15 0x00297b88 in -[UIApplication handleEvent:withNewEvent:] ()
#16 0x002936d3 in -[UIApplication sendEvent:] ()
#17 0x0029a0b5 in _UIApplicationHandleEvent ()
#18 0x0239eef1 in PurpleEventCallback ()
#19 0x01bb2b80 in CFRunLoopRunSpecific ()
#20 0x01bb1c48 in CFRunLoopRunInMode ()
#21 0x00291e69 in -[UIApplication _run] ()
#22 0x0029b003 in UIApplicationMain ()
#23 0x000026a8 in main (argc=1, argv=0xbffff000) at main.m:14
他のスレッドにこの特定の問題は見られませんでしたが、見逃した場合は手がかりをお願いします。
アイデア?
ありがとう。
解決
XIBファイルをロードすると、NibdeCoderでクラッシュしています。おそらく、存在しない、または初期化されていないオブジェクトまたはプロパティへの参照があります。
他のヒント
.xibファイルの名前とinitbynibnameメソッドの名前が同じ場合は確認してください。おそらく、これらの2つの名前は異なります。
私はこれを教える自分自身の本の中で同様に基本的なiPhoneアプリのためにこれを解決しました、そして、「前ではなく、Meowが台無しになったもの(下)の後に @を置き忘れたことに気付きましたエラー:
animalSounds=[[NSArray alloc]initWithObjects: @"Oink","@Rawr",@"Ssss",@"Roof","@Meow",@"Honk",@"Squeak",nil];
デバッグするには、ブレークポイントとNSLOG出力を設定するスーパーベーシック方法を使用したため、使用していた4つの変数のどれが台無しにされているかがわかりました。