谁能解释一下何时使用 initWithNibName 以及何时使用 initWithCoder?
最佳答案
initWithNibName:
通常与 View Controller 对象一起使用。这个想法是,您有一个 NIB 文件(或 XIB,相同的东西),其中包含您已在 Interface Builder 中设计的 UIView
(或 NSView
)。当你的 View Controller 启动时,它有一个 view
属性和 socket ,你必须自己绘制 - 除非你已经在 IB 中设计了它。因此,这个构造函数允许您启动新的 Controller 对象并告诉它在哪个 NIB 文件中查找其 View 。连接 NIB 本身以确保成功的讨论有点超出了此处的主题。
initWithCoder:
还有另一个任务。当您使用 encodeWithCoder:
序列化对象时,您最终需要反序列化(或“解码”)该数据以将其转回您的类的对象。
无论如何,回顾一下:只有当您希望对象支持 NSCoding
时,您才可以在类上实现 encodeWithCoder:
和 initWithCoder:
协议(protocol)。当您想要启动一个可以使用 NIB 文件中存档的对象初始化其属性的对象时,您可以使用 initWithNibName:(通常您不会自己实现它)。
对 NSCoding
有一个非常棒的概述 over here 。
关于iphone - initWithNibName 和 initWithCoder 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3986598/