我想创建一个NSWindow
的子类。该子类需要在使用某些成员变量之前对其进行初始化。在 objective-c 中捕获初始化的最佳方法是什么?我发现init
很少以允许我执行此操作的方式被调用。 NSWindow
有几个初始化向量,我需要重写它们。我需要覆盖它们中的每一个吗?
最佳答案
每个类都应具有一个所谓的指定初始值设定项。这是所有其他init方法调用的init方法。那就是要覆盖的那个。文档通常会告诉您指定的初始化程序是哪一个。对于NSWindow
,它是:initWithContentRect:styleMask:backing:defer:
除了指定的初始化程序之外,如果子类实现了-initWithCoder:
协议(protocol),则还应该重写NSCoding
。 -initWithCoder:
是从存档(例如NIB文件)实例化实例时使用的初始化程序。
请参阅Apple的“Objective-C编程语言”中的The Designated Initializer。
关于objective-c - 我应该如何在Objective-C中继承NSWindow初始化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4271115/