账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    谁能用自己的话解释init和initWithFrame调用的先后顺序原因
    54
    0

    这是一个自定义view:

    @implementation MyView
    
    - (instancetype)init {
        if (self = [super init]) {
            NSLog(@"调用了init");
        }
        return self;
    }
    
    - (instancetype)initWithFrame:(CGRect)frame {
        if (self = [super initWithFrame:frame]) {
            NSLog(@"调用了initWithFrame");
        }
        return self;
    }
    
    
    @end
    

    现在我调用它的init方法:

    MyView *myView = [[MyView alloc] init];

    控制台打印信息是:
    2017-10-09 11:14:35.224 block[2391:262544] 调用了initWithFrame
    2017-10-09 11:14:35.225 block[2391:262544] 调用了init

    问:
    为什么先打印的是initWithFrame而不是init?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 回懵一笑百眉生 普通会员 1楼

      初始化和初始化_frame调用的先后顺序主要取决于它们在Objective-C代码中的位置。

      初始化是任何类或对象的生命周期中都会进行的,它负责初始化对象的状态。在初始化过程中,我们需要设置对象的属性,创建对象的实例,分配内存等。

      初始化帧是Objective-C中的一个函数,它在对象初始化后调用。初始化帧的主要任务是在内存中为对象分配空间,以便在后续的生命周期中使用。这个过程包括设置对象的属性,创建对象的实例,分配内存等。

      所以,初始化和初始化_frame调用的先后顺序是初始化在初始化帧之前。也就是说,初始化先于初始化_frame,初始化帧在初始化之后调用。

    更多回答
    网站公告
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部