扩展使用类别具有相同方法的类名
问题描述:
我想用类别的NSArray + Populate.h扩展类:扩展使用类别具有相同方法的类名
@interface NSArray (Populate)
-(NSArray *) populateArray;
@end
我如何可以检测的情况,如果有其他类别(从另一个模块或库),使用同名的方法扩展NSArray?
例如,如果有一个的NSArray + Fill.h:
@interface NSArray (Fill)
-(NSArray *) populateArray;
@end
据我了解,在运行时引擎会选择默默的版本之一,没有任何崩溃?
答
您无法检测到这种情况,并且无法确定哪个实施优先于-populateArray
。由于这个原因,一些开发人员喜欢为其类别方法名称添加前缀
引用The Objective-C Programming Language文件,
一个类别不能可靠地覆盖在同一类的其他类声明的方法。
这个问题是特别重要的,因为许多Cocoa类是使用类别实现的。您尝试覆盖的框架定义方法本身可能已在类别中实现,因此没有定义哪个实现优先。