iphone - 调用-initWithFrame : on super class

标签 iphone cocoa-touch ios uiview

有人可以帮助我理解为什么我们在初始化之前首先调用 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;

最佳答案

假设我有一个名为 SpinningViewUIView 子类。创建 spinningView 的代码如下所示:

SpinningView *spinner = [[Spin​​ningView 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/

相关文章:

ios - Objective-C 内存访问失败

iphone - 如何使用 NSURLRequest 在 Http 请求中发送 json 数据

ios - 无法找到 `GoogleSymbolUtilities (~> 1.1)` 所依赖的 `FirebaseAnalytics` 规范

iOS 默认项目语言

iphone - UIWebView 错误委托(delegate)方法与可达性

iPhone:设置UITableView的静态内容

cocoa-touch - 带有半透明部分标题和不同颜色部分背景的 UITableView

ios - 检查 intValue 时文本字段中的标点符号导致错误行为

ios - SceneKit 中的地板在运行时是垂直方向的

ios - iPhone 6 和 iPhone 6 Plus 的方向问题