向NSArray添加类别

Ton*_*ger 3 iphone objective-c categories

我在NSArray中添加了一个带有辅助方法的类别进行排序.我的单元测试全部通过,但是当在模拟器中运行应用程序时,它会爆炸.这可能是因为NSMutableArray/NSCFArray 类集群的东西吗?

这是错误:'NSInvalidArgumentException',原因:'*** - [NSCFArray sortBySequenceAsc]:无法识别的选择器发送到实例0x489c1f0'

无论如何,将类别添加到NSArray和NSMutableArray的正确方法是什么?

@interface NSArray (Util) 
- (NSArray *)sortBySequenceAsc;
@end 

@implementation NSArray (Util)
- (NSArray *)sortBySequenceAsc {
    //my custom sort code here
}
@end
Run Code Online (Sandbox Code Playgroud)

Dav*_*ong 9

我已NSArray多次使用类别没有问题,所以我猜你的问题在别处(因为你的类别看起来正确).

由于您收到"无法识别的选择器"错误,这意味着运行时不知道您的类别,这意味着它没有链接到您的二进制文件.我会检查并确保您的类别的.m文件包含在相应的目标中,清理并再次构建.

编辑:例如,这篇博客文章展示了如何创建一个类别NSArray来创建原始数组的混乱副本.

编辑#2:Apple关于类别的文档使用扩展功能的具体示例NSArray,因此我发现很难相信"推荐"方法是将数组包装在辅助对象中. 引文(在页面中搜索五个"NSArray"参考)