美文网首页i日久生。。。
iOS init~初始化流程

iOS init~初始化流程

作者: NapoleonY | 来源:发表于2018-03-04 11:29 被阅读10次

    UIView有多个init方法

    • - (instancetype)init
    • - (instancetype)initWithFrame:(CGRect)frame
    • - (instancetype)initWithCoder:(NSCoder *)aDecoder

    新建一个类View

    #import "View.h"
    
    @implementation View
    
    - (instancetype)init {
        self = [super init];
        if (self) {
            NSLog(@"调用init");
        }
        return self;
    }
    
    - (instancetype)initWithFrame:(CGRect)frame {
        self = [super initWithFrame:frame];
        if (self) {
            NSLog(@"调用initWithFrame");
            NSString *str = NSStringFromCGRect(frame);
            NSLog(@"frame = %@", str);
        }
        return self;
    }
    
    - (instancetype)initWithSth:(NSString *)sth {
        self = [super init];
        if (self) {
            NSLog(@"调用initWithSth");
        }
        return self;
    }
    
    @end
    
    
    • 使用init函数创建实例
      首先调用initWithFrame:函数(此时FrameCGRectZero),然后调用init函数
    • 使用initWithFrame:函数创建实例
      首先调用initWithFrame:函数(此时Frame为设定的值)
    • 使用自定义的初始化函数
      首先调用initWithFrame:函数(此时FrameCGRectZero)

    备注:
    Swift 中使用let view = testView()这种方式初始化时,首先调用override init(frame: CGRect)函数(此时FrameCGRectZero),同上述“使用init函数创建实例”一样

    相关文章

      网友评论

        本文标题:iOS init~初始化流程

        本文链接:https://www.haomeiwen.com/subject/ryyffftx.html