我正在制作一款 iPhone 游戏,并希望将 YAML 用于数据文件。感谢this question我继续并得到了 syck library .我设法用 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] 如果我做错了什么,可能是在这一步。
最佳答案
您是否在build设置中传递了 -ObjC
和 -all_load
链接器标志?在链接到包含 Objective-C 类别的库时需要这些(这是 Syck 用来向 NSArray 和其他内置类添加方法的)。有关详细信息,请参阅以下内容:
关于iphone - 链接到 yaml 框架时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15755601/