Objective c 解释awakeFromNib和initwithFrame:用法
我正在浏览斯坦福iPhone开发人员在iTunes上的课程,并在第5课中遇到了这个问题 我们正在努力确保在设备旋转时重新绘制。 我有两个与此相关的问题:Objective c 解释awakeFromNib和initwithFrame:用法,objective-c,Objective C,我正在浏览斯坦福iPhone开发人员在iTunes上的课程,并在第5课中遇到了这个问题 我们正在努力确保在设备旋转时重新绘制。 我有两个与此相关的问题: 从NIB中唤醒的是什么?在代码的其余部分中没有对该方法的调用。它是如何触发的 initwithFrame:中的代码做什么 首先,initWitFrame将初始化您在给定矩形空间中使用的内容 CGRect是坐标位置。阅读CGRectMake。基本思想是CGRectMake(CGFloat x,CGFloat y,CGFloat width,CG
是什么?在代码的其余部分中没有对该方法的调用。它是如何触发的
initwithFrame:
中的代码做什么首先,initWitFrame将初始化您在给定矩形空间中使用的内容 CGRect是坐标位置。阅读CGRectMake。基本思想是
CGRectMake(CGFloat x,CGFloat y,CGFloat width,CGFloat height)
对于问题的后半部分,
NSBundle
在完成加载nib时调用checkawakeFromNib
实际上,在初始化视图时,您的代码可以采用两种不同的代码路径,这取决于它是从nib加载的还是在运行时创建的
- 如果它是从nib加载的,则加载的一部分将通过调用
对其进行初始化,然后在连接所有插座后调用initWithCoder:
awakeFromNib
- 如果以编程方式创建视图,则可以使用
对其进行初始化(并且不会调用initWithFrame:
,因为它不是从nib加载的)awakeFromNib
self=[super init…]
是如何调用超类的初始值设定项的约定(因为它可能返回不同的对象)。这些是Objective-C和面向对象编程中的基本概念,但有点超出了原始问题的范围。
-(void)setup
{
self.contentMode = UIViewContentModeRedraw;
}
-(void)awakeFromNib
{
[self setup];
}
-(id)initWithFrame:(CGRect)frame
{
self=[super initWithFrame:frame];
if (self) {
[self setup];
}
return self;
}