Mar*_*aev 3 iphone objective-c ios
我想使用类NSArray + Populate.h扩展一个类:
@interface NSArray (Populate)
-(NSArray *) populateArray;
@end
Run Code Online (Sandbox Code Playgroud)
如果有另一个类别(来自另一个模块或库),使用具有相同名称的方法扩展NSArray,如何检测情况?
例如,如果有NSArray + Fill.h:
@interface NSArray (Fill)
-(NSArray *) populateArray;
@end
Run Code Online (Sandbox Code Playgroud)
据我了解,运行时引擎会默默地选择其中一个版本,而不会发生任何崩溃?
小智 7
您无法检测到这种情况,也无法确定哪个实现-populateArray
优先.出于这个原因,一些开发人员更喜欢为其类别方法名称加前
引用Objective-C编程语言文档,
类别无法可靠地覆盖在同一类的另一个类别中声明的方法.
这个问题特别重要,因为许多Cocoa类都是使用类别实现的.您尝试覆盖的框架定义方法本身可能已在类别中实现,因此未定义优先级高的实现.
归档时间: |
|
查看次数: |
1212 次 |
最近记录: |