使用Category覆盖NSObject方法是否安全。也影响系统

时间:2013-01-18 14:08:07

标签: objective-c override categories nsobject

我听起来可能是一个愚蠢的问题,但我仍然害怕这样做。因为我想覆盖一个NSObject方法,即addObserver:with Category。它对系统上运行的其他应用程序有影响吗?

3 个答案:

答案 0 :(得分:2)

覆盖addObserver:forKeyPath:option:contex不是一个好主意。从类别实现中,您无法调用方法的super实现,这基本上意味着不会添加任何观察者。

虽然这只会影响你的应用程序,但它会在全球范围内这样做,这意味着即使是外部框架也会受到影响,比如UIKit或Fundation。

答案 1 :(得分:1)

尽管Objective-C语言目前允许您使用类别来覆盖类继承的方法,甚至是类接口中声明的方法,但强烈建议您不这样做。类别不能替代子类。

关于您的问题是否会对系统上运行的其他应用产生影响?
答案是大号。它只会影响您的应用。

答案 2 :(得分:0)

虽然category为您提供了向现有类添加新方法的规定。您也可以覆盖现有方法,但在极少数情况下,您最终可能会失去控件,因为将调用哪种方法!!!

有时甚至会覆盖使用Frameworks方法的方法,并且不考虑您的方法。

所以我建议你不要使用相同的方法名来覆盖。您可以使用as来区分:

addObserverCustom: