Objective-C类别的安全性如何?
Objective-C类别非常有用,但这种功能存在一些问题。这些基本上有两种形式,据我所知:Objective-C类别的安全性如何?,objective-c,Objective C,Objective-C类别非常有用,但这种功能存在一些问题。这些基本上有两种形式,据我所知: 试图添加相同便利方法的两个类别。在这种情况下,未定义使用哪一个。如果您很小心,不要添加太多方法或使用特别常见的方法名,那么第一个问题几乎永远不会成为问题 编写器向类中添加的与类别冲突的新方法。在这种情况下,类别将覆盖类方法。由于班级可能不在我的控制之下,我更担心这个问题 后台移植更改应该是相当安全的,但实现接口或添加方便的方法似乎更危险。我知道Cocoa似乎经常为了方便方法而使用它,但是基类也在那里
- 试图添加相同便利方法的两个类别。在这种情况下,未定义使用哪一个。如果您很小心,不要添加太多方法或使用特别常见的方法名,那么第一个问题几乎永远不会成为问题李>
- 编写器向类中添加的与类别冲突的新方法。在这种情况下,类别将覆盖类方法。由于班级可能不在我的控制之下,我更担心这个问题
那么,类别有多安全/有什么准则来保证它们的安全呢?我发现它很有用,它包括一个惯例来帮助避免您提到的冲突。通常,在扩展不受您控制的代码时(例如,Foundation),传统的做法是在方法名上使用前缀或后缀,以避免此类冲突 示例来自:
这不是最漂亮的解决方案,但如果你担心脆弱性,这是一个好主意。我已经看过好几次了,但我还没有全部读过。我想我应该。
@interface NSObject (PRHPerformOnMainThread)
- (id) performOnMainThread_PRH;
@end