码迷,mamicode.com
首页 > 其他好文 > 详细

[Objective-c 基础 - 2.7] 构造方法、重写init方法

时间:2015-05-13 21:38:35      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:

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) init
2 {
3     if (self = [super init])//nil实际是0
4     {
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 @end
14  
15 @implementation Person
16 
17 - (id) initWithName:(NSString *) name
18 {
19     if (self = [super init])
20     {
21         _name = name;
22     }
23    
24     return self;
25 }
26 
27 @end
技术分享

 

原则:父类的成员变量交给父类的方法去处理
谁声明,谁处理
 

[Objective-c 基础 - 2.7] 构造方法、重写init方法

标签:

原文地址:http://www.cnblogs.com/wvqusrtg/p/4501581.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!