黑马程序员技术交流社区
标题:
oc构造方法简单介绍
[打印本页]
作者:
S970028126
时间:
2015-6-28 16:18
标题:
oc构造方法简单介绍
本帖最后由 S970028126 于 2015-6-29 11:58 编辑
构造方法:
Person *p = [Person new];
//完整的创建一个可用的对象(new方法):
1.分配存储空间 +alloc
2.初始化 -init
new方法:
1.调用+alloc分配存储空间
Person *p1 = [Person alloc]
2.调用-init进行初始化
Person *p2 = [p1 init];
可以写为一句:
Person *p3 = [[person alloc] init];(常用)
构造方法:用来初始化对象的方法,是个对象方法,减号开头
init方法属于NSObject类,将所用成员变量初试为0
在@implementation中重写-init方法
- (id)init //类型不确定,Person,Cat
{
//1.一定要调用回super的init方法,目的是初试化父类声明的一些成员变量和其他属性
self = [super init];// 返回当前对象self
//2.如果对象初始化成功,才有必要进行接下来的初始化
if (self != nil)// 可以直接写if ( self )
{
//初始化成功
_age = 10;
}
//3.返回一个已经初始化完毕的对象
return self;
}//每个对象创建出来_age都是10
最精简的写法:
- (id)init
{
if (self = [super init])
{
_age = 10;
}
return self;
}
重写构造方法的目的:为了让对象创建出来,成员变量就会有固定的值
重写构造方法的注意点:
1.先调用父类的构造方法 [super init]
2.再进行子类内部成员变量的初始化
自定义构造方法
1.一定是对象方法,一定以-开头
2.返回值一般是id类型
3.方法名一般以init开头
- (id)initWithName: (NSString *)name;
- (id)initWitgAge: (int)age;
- (id)initWithName: (NSString *)name andAge: (int)age
举例:一些构造方法
-(id)init
{
if(self = [super init])
{
_name = @"jack";
}
return self;
}
- (id)initWithName: (NSString*)name
{
if (self = [super init])
{
_name = name;
}
return self;
}
- (id)initWitgAge: (int)age
{
if (self = [super init])
{
_age = age;
}
return self;
}
- (id)initWithName: (NSString *)name andAge: (int)age
{
if (self = [super init])
{
_name = name;
_age = age;
}
return self;
}
注意: 父类的属性交给父类去处理,子类方法处理子类自己的,不要在子类中处理父类的
- (id)initWithName: (NSString *)name andAge: (int)age andNo: (int)no
{
if (self = [super initWithName:name andAge: age])//将name age 传到父类方法中进行初始化
{
_no =no;
}
return self;
}
@end
作者:
深蓝的蓝
时间:
2015-6-28 23:49
没看懂 不过还是顶一下
作者:
Fighting--BJ
时间:
2015-6-29 01:07
学习学习!
作者:
lixianzhu0712
时间:
2015-6-29 11:24
刚好需要!!谢谢
作者:
盖世英雄199001
时间:
2015-6-29 16:12
挺好,学习一下
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2