我使用辅助方法向 NSArray 添加了一个类别来进行排序。我的单元测试都通过了,但是当在模拟器中运行应用程序时它爆炸了。这可能是因为 NSMutableArray/NSCFArray class cluster stuff?
这里是错误: 'NSInvalidArgumentException',原因:'*** -[NSCFArray sortBySequenceAsc]:无法识别的选择器发送到实例 0x489c1f0'
无论如何,向 NSArray 和 NSMutableArray 添加类别的正确方法是什么?
@interface NSArray (Util)
- (NSArray *)sortBySequenceAsc;
@end
@implementation NSArray (Util)
- (NSArray *)sortBySequenceAsc {
//my custom sort code here
}
@end
最佳答案
我已经多次在 NSArray
上使用类别,没有任何问题,所以我猜你的问题出在其他地方(因为你的类别看起来是正确的)。
由于您收到“无法识别的选择器”错误,这意味着运行时不知道您的类别,这意味着它没有链接到您的二进制文件中。我会检查并确保您的类别的 .m 文件包含在适当的目标中,清理并重新构建。
编辑:例如,this blog post展示了如何为 NSArray
创建类别以创建原始数组的随机副本。
编辑 #2:Apple 关于类别的文档使用了扩展 NSArray
功能的具体示例,所以我很难相信“推荐”的方法是将数组包装在帮助对象。 Citation (search the page for the five "NSArray" references)
关于iphone - 向 NSArray 添加类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1969999/