gpt4 book ai didi

objective-c - Objective-C 类别的安全性如何?

转载 作者:太空狗 更新时间:2023-10-30 03:59:15 25 4
gpt4 key购买 nike

Objective-C 类别非常有用,但这种功能存在一些问题。这些基本上以我所知道的两种形式出现:

  • 两个类别试图添加相同的便捷方法。在这种情况下,未定义使用哪个。如果您小心——不添加太多方法或使用特别常见的方法名称——第一个问题几乎永远不会成为问题。
  • 作者将与类别冲突的新方法添加到类中。在这种情况下,类别会覆盖类方法。由于类(class)可能不受我控制,所以我比较担心这个问题。

向后移植更改应该是相当安全的,但实现接口(interface)或添加便利方法似乎更危险。我知道 Cocoa 似乎经常将它用于方便的方法,但基类再次受到控制。我认为他们可能只是使用类别来减少依赖性——因此 String 类可以具有在 Cocoa 中工作的便捷方法,但如果您不使用 Cocoa,则不会引入它。

那么,类别的安全性如何/有哪些准则可以确保它们安全?

最佳答案

通常,当扩展不受您控制的代码(例如 Foundation)时,传统上在方法名称上使用前缀或后缀以避免此类冲突。

示例来自 Peter Hosey's perform on main thread category :

@interface NSObject (PRHPerformOnMainThread)
- (id) performOnMainThread_PRH;
@end

这不是最漂亮的解决方案,但如果您担心脆弱性,这是个好主意。

关于objective-c - Objective-C 类别的安全性如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2301037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com