我这听起来可能是一个愚蠢的问题,但我仍然害怕这样做。因为我想覆盖一个 NSObject 方法,即 addObserver: 与一个类别。它对系统上运行的其他应用程序有影响吗?
问问题
271 次
3 回答
2
覆盖addObserver:forKeyPath:option:contex
不是一个好主意。从类别实现中,您不能调用方法的super
实现,这基本上意味着永远不会添加任何观察者。
虽然这只会影响你的应用程序,但它会在全球范围内这样做,这意味着即使是外部框架也会受到影响,比如 UIKit 或 Fundation。
于 2013-01-18T14:27:14.117 回答
1
尽管当前 Objective-C 语言允许您使用类别来覆盖类继承的方法,甚至是类接口中声明的方法,但强烈建议您不要这样做。类别不能替代子类。
关于您的问题它对系统上运行的其他应用程序有影响吗?
答案是大不。它只会影响您的应用程序。
于 2013-01-18T14:32:21.480 回答
0
尽管类别为您提供了向现有类添加新方法的规定。您也可以覆盖现有方法,但在少数情况下,您最终可能会失去对调用哪个方法的控制!!!
有时,即使您覆盖了使用框架方法的方法,也不会考虑您的方法。
所以我建议你不应该使用相同的方法名来覆盖。您可以使用 as 来区分:
addObserverCustom:
于 2013-01-18T14:14:45.833 回答