category methods should not overrIDe existing methods (class or instance) Two different categorIEs implementing the same method for the same class will result in undefined behavior
我想知道当我在同一类别中覆盖我自己的类别方法之一时,会发生什么.例如:
@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实现是优先的,但我不确定是否保证发生,或者仅仅是一种特定的未定义行为.
解决方法 每个类的每个方法都有一个实现.类别添加或替换特定类的方法.这意味着你看到的行为,MyClass有一个foo,NSVIEw有另一个foo,是很好的定义. MyClass的任何实例都将具有不同于不是MyClass的NSVIEw的任何实例的foo,就像在主实现中定义了foo而不是类别一样.甚至可以从MyClass调用[super foo]来访问为NSVIEw定义的foo. 总结以上是内存溢出为你收集整理的objective-c – 如果两个ObjC类别覆盖相同的方法会发生什么?全部内容,希望文章能够帮你解决objective-c – 如果两个ObjC类别覆盖相同的方法会发生什么?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)