首页 > 代码库 > [Objective-c 基础 - 2.7] 构造方法、重写init方法
[Objective-c 基础 - 2.7] 构造方法、重写init方法
A.id
万能指针,可以指向任何对象,实质是NSObject的指针,使用的时候不用加上*
B.NSObject中得类方法new
1.完整地创建一个可用对象步骤
(1)分配存储空间 + alloc
(2)初始化 - init
1 // 1.调用+alloc分配存储空间2 Person *p1 = [Person alloc];3 // 2.调用-init进行初始化4 Person *p2 = [p1 init];5 // 同时进行分配存储空间和初始化6 Person *p3 = [[Person alloc] init];
(3)构造方法就是init方法
1 @implementation Person 2 3 // 重写-init方法 4 - (id) init 5 { 6 // 1.一定要调用super的init方法 7 self = [super init];// 当前对象self 8 9 // 2.如果对象初始化成功,才能进行接下来的子类初始化10 if (self != nil)11 {// 初始化成功12 self.age = 10;13 }14 15 // 3.返回一个已经初始化的对象16 return self;17 }18 19 @end
简化:
1 - (id) init2 {3 if (self = [super init])//nil实际是04 {5 self.age = 10;6 }7 return self;8 }
C.自定义构造方法
1 @interface Person : NSObject 2 @property NSString *name; 3 4 /* 5 自定义构造方法的规范 6 1.一定是对象方法,一定以-开头 7 2.返回值一般是id类型 8 3.方法名一般以init开头 9 */10 11 - (id) initWithName:(NSString *) name;12 13 @end14 15 @implementation Person16 17 - (id) initWithName:(NSString *) name18 {19 if (self = [super init])20 {21 _name = name;22 }23 24 return self;25 }26 27 @end
原则:父类的成员变量交给父类的方法去处理
谁声明,谁处理
[Objective-c 基础 - 2.7] 构造方法、重写init方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。