我可能聽起來很愚蠢,但我仍然害怕這樣做。因爲我想重寫一個NSObject方法,即addObserver:與一個類別。它對系統上運行的其他應用程序有影響嗎?用類別覆蓋NSObject方法是否安全?同樣影響到系統
1
A
回答
1
儘管Objective-C語言目前允許您使用類別來覆蓋該類繼承的方法,或者甚至在類接口中聲明的方法,但強烈建議您不要這樣做。一個類別不能代替一個子類。
關於您的問題它對系統上運行的其他應用程序有影響嗎?
答案是大號它只會影響您的應用程序。
0
儘管類別爲您提供了將新方法添加到現有類的規定。您也可以覆蓋現有的方法,但在少數情況下,您最終可能會失去控制權,因爲哪種方法會被調用!
有時,即使您重寫使用Frameworks方法的方法,也不會考慮您的方法。
所以我建議你不應該使用相同的方法名稱來覆蓋。您可以直接使用,來區分:
addObserverCustom:
2
重載addObserver:forKeyPath:option:contex
是不是一個好主意。從類別實現中,您不能調用方法的super
實現,這基本意味着沒有觀察者會被添加。
雖然這隻會影響你的應用,但它會在全球範圍內這樣做,這意味着即使外部框架也會受到影響,比如UIKit或Fundation。
相關問題
- 1. Objective-C覆蓋[NSObject初始化]是否安全?
- 2. 覆蓋系統方法
- 3. 操作系統漏洞是否會影響數據庫安全?
- 4. 是否有可能覆蓋網格系統使用全寬
- 5. WCF:使用分部類覆蓋客戶端的Dispose方法是否安全?
- 6. 覆蓋CSS樣式的性能影響
- 7. 覆蓋系統類的serialVersionUID
- 8. NSObject的覆蓋描述方法
- 9. 覆蓋RLMObject -hash是否安全?
- 10. 使用類別覆蓋NSURL方法
- 11. 使用隱式類別覆蓋方法
- 12. 覆蓋是否更容易受到網絡釣魚的影響?
- 13. 有條件地通過Objective-C中的類別覆蓋系統方法?
- 14. 覆蓋類別中的方法?
- 15. 可以覆蓋類別方法嗎? IOS
- 16. opencart的安全問題是否會影響Paypal的安全層?
- 17. 覆蓋寶石的系統安裝
- 18. 調用覆蓋方法,超類調用覆蓋方法
- 19. Ruby類方法是否線程安全?
- 20. Rails - 覆蓋別名方法
- 21. 重寫Objective-C中的類別定義方法是否安全?
- 22. OS X系統調用是否可以覆蓋或插入系統範圍內?
- 23. 覆蓋使用類別的方法,當該方法已在類別中定義
- 24. 如何覆蓋影響MVC中所有控制器的全局方法?
- 25. 不同泛型類型覆蓋方法
- 26. Docker:是否可以使用覆蓋支持文件系統?
- 27. 方法不會覆蓋任何方法從它的超類集<NSObject>
- 28. Rails找到方法是否安全?
- 29. Web.config覆蓋不影響用戶控件
- 30. 是否可以使用Dexmaker從現有類中覆蓋方法?
重點是影響外部框架。我使用method_exchangeImplementations(originalAddObserver,myAddObserver)調用原始方法;在+ load類方法中。 – zalavari
我需要這個的原因是添加屬性的可觀察數組屬性。 因此,新的addObserve:檢查我是否觀察了我的'屬性'鍵,以防萬一它觀察到其他所有屬性,並手動通知'屬性'鍵。 valuesAffectingKey ...不令人滿意,因爲它不能正確支持可變屬性,如提供插入或刪除通知。 – zalavari
或提供腳本編寫方法。 – zalavari