注:質問の下部にある更新を参照してください。デバッグをさらに進めることができました。
これはプロジェクトのセットアップの問題だと思いますが、コンパイル エラーがないため、何を調べればよいかわかりません。
CocoaPods が管理するプロジェクトに MagicalRecord 2.1 (現在の安定版) が含まれています。CocoaPods のビルド設定は変更していません。他の依存関係は完全に管理されており、これまでのところ問題はまったくありません。
ファイルに追加#import <MagicalRecord/CoreData+MagicalRecord.h>
したところ、App-Prefix.pch
Xcode は、正しいセットアップで期待されるすべてのシンボルの提案を提供してくれました。コンパイラ エラーは発生しないので、CocoaPods が MR をライブラリに正常に組み込み、これをコードに正常にインポートしているとしか思えません。
問題は、アプリケーション デリゲートで MagicalRecord を初期化するときに発生します。
- (void)applicationDidFinishLaunching:(NSNotification *)notification {
[MagicalRecord setupCoreDataStack];
//... other code
}
初期化はほぼ最初に実行されるコードであり、これと競合する実行されたコードは他にありません。
この行はハングし、その行以降は何も実行されません。ハングが発生した場所を突き止めることができました。にメッセージを渡すMagicalRecord
と、クラスがそれを+initialize
呼び出してしまい、それが機能していません。より具体的には、initialize メソッドで呼び出されたすべてのメソッドが例外のスローをself
引き起こしています。unrecognized selector
私が見る限り、これには2つの奇妙な点があります。
- メソッドの実装が見つからないのはなぜですか?
- なぜそれがハングアップするのですか?
Objective-C がどのように初期化メソッドを使用するかについて十分に知りませんが、例外がスローされたときにハングすると予想されますか?
例外が発生したときのスタック トレースを次に示します。
frame #0: 0x00007fff93a2e3c5 libobjc.A.dylib`objc_exception_throw
frame #1: 0x00007fff996dc31a CoreFoundation`+[NSObject(NSObject) doesNotRecognizeSelector:] + 186
frame #2: 0x00007fff996341ee CoreFoundation`___forwarding___ + 414
frame #3: 0x00007fff99633fd8 CoreFoundation`_CF_forwarding_prep_0 + 232
frame #4: 0x000000010004e32c River`+[MagicalRecord initialize] + 92 at MagicalRecord.m:89
frame #5: 0x00007fff93a25236 libobjc.A.dylib`_class_initialize + 310
frame #6: 0x00007fff93a250f3 libobjc.A.dylib`prepareForMethodLookup + 164
frame #7: 0x00007fff93a24eef libobjc.A.dylib`lookUpMethod + 71
frame #8: 0x00007fff93a232fc libobjc.A.dylib`objc_msgSend + 188
frame #9: 0x0000000100001d36 MyApp`-[AppDelegate applicationDidFinishLaunching:] + 86 at AppDelegate.m:46
さらにデバッグを試みることができるトリックを含め、これに関するヘルプは大歓迎です。
アップデート:
Derived Data ディレクトリを削除した後、プログラムが Pod にリンクできませんでした。MagicalRecord を追加した後、Xcode が Pod のビルドに失敗し、その古いバージョンにリンクしていたと思います (これについては間違っている可能性がありますが、確かではありません)。
これは、Xcode および/または CocoaPods の問題のようです。Pod を適切にビルドする方法を見つけようとしていますが、CocoaPods や Xcode ビルド設定の専門家ではないため、どこまで到達できるかわかりません。
更新 2:
Xcode とプロジェクトのセットアップに問題があり、古い Pod ライブラリとリンクしていたため、派生データが削除された後にのみ問題が発生しました。今、認識されていないセレクターの問題で正方形 1 に戻りました。