我有一个简单的课程MyView
继承自NSView
和实例变量NSImage * image;
在里面。类的功能是在视图上绘制图像。
然而,在-drawRect:
图像实例始终相等nil
,如果它是在-init:
功能而不是nil
如果它是在-awakeFromNib:
。日志显示两者-init:
and -awakeFromNib:
函数仅被调用一次。
Does -awakeFromNib:
默认情况下重新初始化 GUI 组件?
否。没有默认实现awakeFromNib
.
您的问题是您覆盖了错误的初始化方法。一个NSView
's 指定的初始值设定项 http://developer.apple.com/library/mac/DOCUMENTATION/General/Conceptual/DevPedia-CocoaCore/MultipleInitializers.html#//apple_ref/doc/uid/TP40008195-CH33-SW2 is initWithFrame:
。你的子类很简单init
永远不会被呼叫,这就是为什么你的image
ivar 没有指向任何东西。
您可以在以下任一位置初始化 ivarawakeFromNib
or initWithFrame:
。没什么区别。前者在后者之后调用,它是作为一个点提供的,您可以在其中插入需要与 nib 中的其他对象交互的初始化代码(通过您的IBOutlets
).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)