我想創建一個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. C#繼承類初始化
- 2. 繼承 - 初始化問題
- 3. 繼承和初始化
- 4. 初始化NSWindow在monomac
- 5. 初始化繼承類中的字段
- 6. 類變量初始化在Python3繼承
- 7. C++:繼承域的初始化
- 8. 瞭解Python的繼承和初始化
- 9. 初始化NSManagedObject子類時的繼承
- 10. 的Object.create繼承和初始化代碼
- 11. 繼承向量和初始化
- 12. 繼承,然後覆蓋父初始化
- 13. C++虛擬繼承初始化順序
- 14. C++初始化常量和繼承
- 15. 如何避免初始化繼承模塊的入口點
- 16. 繼承的Razor視圖 - 如何運行初始化方法?
- 17. 如何遞歸初始化一個繼承列表的類?
- 18. 嵌套繼承的問題 - 如何初始化父類?
- 19. 如何模仿/繼承數組初始化syntaxin c#?
- 20. 如何用基類初始化繼承類?
- 21. 初始化Rails中繼承模型的實例方法值
- 22. Python中的繼承和初始化方法
- 23. 如何使用protoypal繼承在JavaScript中初始化成員變量
- 24. 繼承時的Ruby執行代碼類部分初始化
- 25. 傳遞初始化列表到繼承的地圖
- 26. C++繼承的模板類和初始化列表
- 27. 帶類繼承的未初始化常量錯誤
- 28. 多重繼承和繼承的數據成員在派生類構造函數初始化列表中
- 29. 在繼承引用成員的構造函數中的C++默認初始化
- 30. 如何在初始化列表中初始化一個struct-type?
在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