我知道有几个规则的有关Objective-C的类别:如果两个ObjC类别重写相同的方法会发生什么?
- 分类方法不应重写现有的方法(类或实例)
- 两个不同类别的执行同样的方法相同类将导致不确定的行为
我想知道,当我重写的叔我自己的分类方法之一,会发生什么他是同一类别。例如:
@interface NSView (MyExtensions)
- (void)foo; // NSView category implementation
@end
@interface MyClass : NSView
{ }
@end
@interface MyClass (MyExtensions)
- (void)foo; // MyClass category implementation
@end
定义了这些接口,当我运行下面的代码时将执行哪个方法?
MyClass * instance = [[MyClass alloc] initWith...];
[instance foo];
[instance release];
注意:对于我的编译器,MyClass的执行优先,但我不知道这是保证发生,或者不确定的行为只是一个特定的味道。
在超类Category中声明和实现的Category方法中覆盖是否正确? – BergP 2013-03-19 14:08:00