您的位置:首页 > 其它

oc基础知识

2014-08-14 19:52 183 查看
基础知识(构造方法)

构造方法:用来初始化对象的方法,是个对象方法。(以 -开头)

完整的创建了一个可用对象。

1,分配存储空间 ,+alloc 方法。

2,初始化 -init 方法。

[person new] 中 new 会调用以上两个方法创建,new方法是 alloc 和 init 的组合体。

分解步骤:1,调用+alloc 分配存储空间。

Person *p1 = [Person alloc];

2,调用 _init 进行初始化

Person *p2 = [Person init];

整合步骤: Person *p3 = [[Person alloc] init ];

构造方法就是 init 方法。

重写构造方法的目的是:

为了让对象创造出来的成员变量,就会有一些固定的值。

重写构造方法(init方法)的条件:

1,一定要调用super的init 方法[super init]:初始化父类中声明的一些成员变量和其他属性。

2,如果对象初始化成功,才有必要进行接下来的初始化。

3,返回一个已经初始化完毕的对象。

重写构造方法的注意点:

1,先调用父类的构造方法。[super init];

2,在进行子类内部成员变量的初始化。

构造方法(init方法)首先要调用alloc方法,返回好一个分配好内存的Person对象。[Person alloc];

然后再调用Person对象的init方法进行初始化。

父类声明的成员变量,实际上这些成员变量也存在于子类对象里边,只要你继承了某一个类,

父类里所有的成员变量你都能拥有。(继承关系)。

所有调用[super init]的目的,就是初始化父类中声明中的一些成员变量和其他属性。初始化完毕isa指针指向类。

[Person *p] = [[Person alloc] init ];

得到结论:任何对象先初始化父类的东西,在初始化自己。

什么是先初始化父类的东西:就是调用父类的init方法[super init];,返回一个初始化好的对象,其实就是self.

为保证oc中返回的对象与self一样,要进行一个赋值的操作(不要问为什么固定写法),self = [super init];

将右边的值赋值给左边,接下来做判断。

指针如果没有指向任何的空间,里边存储的就是0 ,或用oc中用nil 表示。

self其实就是个指针

if(self != nil) 如果self不等于空,就说明初始化成功。

init方法的写法:

- (id)init 一般用整合后的形式: - (id)init

{ {

self = [super init]; if(self = [super init])

if(self) self 为真 {

{ _成员变量 = 赋值;

_成员变量 = 赋值;

} }

return self; return self;

} }

解释:先调用super 的init方法,然后把值赋值给self,再看self值是否为0;

自定义构造方法:

自定义构造方法的规则:

1,一定是对象方法,一定以-开头。

2,返回值一般是id类型。

3,方法名一般以initWith开头。

@interface Person :NSObject

@property NSString* name;

- (id)initWithName:(NSString *)name

{

if (self = [super init])

{

_name = name;

}

return self;

}

@end

在 int main()

{

Person *p = [[Person allco] init];

p.name = @"Rose"; 等价于[p setName:@"Rose"] set方法 和点语法。

NSLog(@"......");

return ;

}

或者 Person *p = [[Person alloc] initWithName:@"Rose"]; 直接初始化完后直接赋值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: