有人可以帮助我理解为什么我们在初始化之前首先调用 super
上的初始化方法。我在 UIView 的子类中遇到一段代码,想知道这里总是调用 myMethod,这意味着我没有在 UIView
中设置框架,那我们为什么要这样做并使用if
条件。
self = [super initWithFrame:CGRectMake(0, 0, 20, 100)];
if(self != nil) {
[self myMethod:data];
self.backgroundColor = [UIColor clearColor];
}
return self;
最佳答案
假设我有一个名为 SpinningView
的 UIView
子类。创建 spinningView
的代码如下所示:
SpinningView *spinner = [[SpinningView alloc] initWithFrame:CGRectMake(0.0, 0.0, 20.0, 20.0)]
现在我们看一下SpinningView的-initWithFrame:
方法的实现
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
self.backgroundColor = [UIColor clearColor];
}
return self;
}
第一行是简单的赋值。我们将自己分配给 UIView
执行 -initWithFrame:
我们使用 if 语句来查看 self 是否有效。如果不是,我们就将其退回。如果是,我们对其进行配置。
关于iphone - 调用-initWithFrame : on super class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5052934/