Objective-C类别非常有用,但这种功能存在一些问题。这些基本上有两种形式,我知道:
Backporting更改应该相当安全,但实现接口或添加便捷方法似乎更危险。我知道Cocoa似乎将它用于方便方法,但是基类再次受到控制。我想也许他们只是使用类别来减少依赖 - 所以String类可以有方便的方法在Cocoa中工作,但是如果你不使用Cocoa,它就不会被引入。
那么,类别/安全性的指导方法有多安全?
答案 0 :(得分:6)
通常,在扩展不受您控制的代码(例如Foundation)时,通常在方法名称上使用前缀或后缀来避免这些类型的冲突。
来自Peter Hosey's perform on main thread category的示例:
@interface NSObject (PRHPerformOnMainThread)
- (id) performOnMainThread_PRH;
@end
这不是最美丽的解决方案,但如果你担心脆弱,这是个好主意。
答案 1 :(得分:4)
我发现Google Objective-C Style Guide很有用,它包含一个约定来帮助避免你提到的冲突。