Objective c 如何避免不同类别的扩展定义相同的方法
Objective-c类可按类别扩展。Objective c 如何避免不同类别的扩展定义相同的方法,objective-c,cocoa,polymorphism,categories,Objective C,Cocoa,Polymorphism,Categories,Objective-c类可按类别扩展。 但是,如果通过过度定义同一方法对同一类进行多类别扩展,则不会定义结果,如下例所示: @implementation someClass (category1) - (void)foo {} @end @implementation someClass (category2) - (void)foo {} @end 在这种情况下,编译器甚至不会显示任何警告消息。在一些大型项目中,由于维修人员不同,这种情况很难解决 所以我的问题是:有什么复杂的模式
但是,如果通过过度定义同一方法对同一类进行多类别扩展,则不会定义结果,如下例所示:
@implementation someClass (category1)
- (void)foo {}
@end
@implementation someClass (category2)
- (void)foo {}
@end
在这种情况下,编译器甚至不会显示任何警告消息。在一些大型项目中,由于维修人员不同,这种情况很难解决
所以我的问题是:有什么复杂的模式或解决方案可以避免这种情况吗?对于大型项目,一个好的做法是在方法名称中添加前缀,如:
- (void)nd_foo;
- (void)sp_foo;
我建议使用大写前缀,就像类名一样。选择器区分大小写,因此有助于区分名称空间前缀和仅为单词的前缀。e、 g.用“ATPosition”代替“ATPosition”。下划线也有类似的用途,尽管一些代码基经常在方法名中使用下划线,因此可能会有歧义。这是有道理的,但对于我所看到的实现,开发人员通常使用小字符作为方法前缀。非常感谢!这似乎是我迄今为止听到的最好的方式。