【发布时间】:2011-03-14 09:54:25
【问题描述】:
我知道一些关于 Objective-C 类别的规则:
- 类别方法不应覆盖现有方法(类或实例)
- 两个不同的类对同一个类实现相同的方法会导致未定义的行为
我想知道当我在同一类别中覆盖我自己的类别方法之一时会发生什么。例如:
@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 实现优先,但我不确定这是否会发生,或者只是一种特定的未定义行为。
【问题讨论】:
标签: objective-c cocoa inheritance methods categories