3

iPhone ゲームを作成していて、データ ファイルに YAML を使用したいと考えています。この質問のおかげで、先に進んでsyck ライブラリを入手しました。xCode を使用してライブラリをコンパイルし、フレームワークをプロジェクトにインポートすることができました [1]。私のコードはヘッダー ファイルを正常にインポートし、xCode は補完を見つけますが、次のコードを実行しようとすると、無効なセレクター例外が発生します。

NSMutableArray *arr = [[NSMutableArray arrayWithCapacity:4] retain];

[arr addObject:@"FOO BAR BAZ QUUX"];
[arr addObject:@"FOO BAR BAZ QUUX"];
[arr addObject:@"FOO BAR BAZ QUUX"];
[arr addObject:@"FOO BAR BAZ QUUX"];

NSLog([arr yamlDescriptionWithIndent:0]);
[arr release];

これは私が得るエラーです:

2013-04-01 23:27:50.530 PhaseWrath[13910:207] -[__NSArrayM yamlDescriptionWithIndent:]: unrecognized selector sent to instance 0x5548a30
2013-04-01 23:27:50.533 PhaseWrath[13910:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM yamlDescriptionWithIndent:]: unrecognized selector sent to instance 0x5548a30'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x0145f5a9 __exceptionPreprocess + 185
    1   libobjc.A.dylib                     0x015b3313 objc_exception_throw + 44
    2   CoreFoundation                      0x014610bb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
    3   CoreFoundation                      0x013d0966 ___forwarding___ + 966
    4   CoreFoundation                      0x013d0522 _CF_forwarding_prep_0 + 50
    5   PhaseWrath                          0x00005e85 +[Skeleton initialize] + 517
    6   libobjc.A.dylib                     0x015b3d9b _class_initialize + 380
    7   libobjc.A.dylib                     0x015bb73f prepareForMethodLookup + 73
...

ヘッダー ファイルが解析されているように見えますが、ライブラリ コードが実際にリンクされる時点で何か問題が発生しています...何かアイデアはありますか? 私は xCode にまったく慣れておらず、一般的に iPhone 向けに開発しています。

[1] 私が何か間違ったことをしたとしたら、おそらくこの段階でした。

4

1 に答える 1

1

ビルド設定でリンカーフラグ-ObjCを渡していますか? -all_loadこれらは、Objective-C カテゴリ (Syck が NSArray やその他の組み込みクラスにメソッドを追加するために使用するもの) を含むライブラリにリンクするときに必要です。詳細については、次を参照してください。

于 2013-04-02T03:58:57.760 に答える