我想創建一個NSWindow
的子類。這個子類在使用之前需要初始化一些成員變量。在目標c中捕獲初始化的最佳方法是什麼?我發現init
很少以某種方式被調用,這使我可以做到這一點。 NSWindow
有幾個初始化向量,我需要重寫。我是否需要重寫每一個?如何在Objective-C中繼承NSWindow的初始化
8
A
回答
8
每類應該有一個所謂的指定初始化。這是所有其他init方法調用的init方法。這是一個重寫。文檔通常會告訴您指定的初始化程序是哪一個。在NSWindow
的情況下,它是:
initWithContentRect:styleMask:backing:defer:
此方法是用於NSWindow類指定初始化。
除了指定初始化,你也應該重寫-initWithCoder:
如果你繼承的類實現NSCoding
協議。 -initWithCoder:
是從存檔(例如NIB文件)實例化實例時使用的初始值設定項。
請參閱Apple的「Objective-C編程語言」中的The Designated Initializer。
2
您是否嘗試過重寫指定初始化器
- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)windowStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)deferCreation screen:(NSScreen *)screen
相關問題
- 1. 初始化繼承
- 2. 繼承 - 初始化問題
- 3. Python類繼承初始化
- 4. 繼承和初始化
- 5. Java繼承vs初始化
- 6. C#繼承類初始化
- 7. 初始化NSWindow在monomac
- 8. 初始化繼承類中的字段
- 9. 類變量初始化在Python3繼承
- 10. 如何在基類中初始化唯一變量(繼承)
- 11. 的Object.create繼承和初始化代碼
- 12. 初始化一個繼承的類
- 13. 添加到繼承的初始化?
- 14. C++:繼承域的初始化
- 15. 初始化繼承的靜態屬性
- 16. 瞭解Python的繼承和初始化
- 17. 初始化NSManagedObject子類時的繼承
- 18. java繼承的靜態初始化
- 19. 使用繼承初始化新類
- 20. 從泛型類繼承初始化器
- 21. 繼承,然後覆蓋父初始化
- 22. NSOpenPanel繼承和「指定初始化」
- 23. C++虛擬繼承初始化順序
- 24. 繼承向量和初始化
- 25. C++初始化常量和繼承
- 26. 在php中的初始化函數的繼承
- 27. 繼承的Razor視圖 - 如何運行初始化方法?
- 28. 如何初始化這個從UIButton繼承的自定義類?
- 29. 如何避免初始化繼承模塊的入口點
- 30. 如何遞歸初始化一個繼承列表的類?
在macOS 10.12 SDK中,NSWindow的指定初始化程序不是Abizem在此指定的初始化程序,而是由Ole指出的。請注意缺少最後一個參數'screen:`。 – 2016-10-11 21:12:48
幾乎看不見`screen:`param tho ...謝謝@JerryKrinock,爲我節省了一些挫折 – codrut 2017-10-17 10:44:08