我有一个简单的类MyView
,它继承自NSView
和实例变量NSImage * image;
。类功能是在视图上绘制图像。
但是,在-drawRect:
图片实例中始终等于nil
,如果它在-init:
函数中初始化,而在nil
中初始化时不是-awakeFromNib:
。日志显示-init:
和-awakeFromNib:
函数仅被调用一次。
默认情况下-awakeFromNib:
重新初始化GUI组件吗?
答案 0 :(得分:9)
没有。 awakeFromNib
没有默认实现。
您的问题是您正在覆盖错误的初始化方法。 NSView
的{{3}}是initWithFrame:
。你的子类的普通init
永远不会被调用,这就是你的image
ivar没有指向任何东西的原因。
您可以在awakeFromNib
或initWithFrame:
中初始化该ivar。没什么区别。前者在后者之后调用,它作为一个点提供,您可以插入需要与笔尖中的其他对象交互的初始化代码(通过IBOutlets
)。