码迷,mamicode.com
首页 > 移动开发 > 详细

iOS开发之oc(八)--小知识补充 init方法补充

时间:2015-02-24 16:19:36      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:

小知识补充 

一、 id

1. 简介

万能指针,能指向任何OC对象,相当于NSObject *

id类型的定义

typedef struct objc_object 
{
   
     Class isa;

} *id;

2. 使用

// 注意:id后面不要加上*

id p = [Person new];

3. 局限性

调用一个不存在的方法,编译器会马上报错

二、 .h和.m文件的抽取

1)每个类分布在不同文件中

2)类的声明放在.h文件,类的实现放在.m文件

3)若想使用某个类,就包含某个类的.h声明文件

三、 init方法补充(重点)

1. 对象创建原理

 new的拆分两部曲

u  分配内存(+alloc)

u  初始化(-init)

Person *p1 = [Person alloc];
Person *p1 = [p1 init];
合成一句后:
Person *p = [[Person alloc] init];

2. init方法的重写

l   想在对象创建完毕后,成员变量马上就有一些默认的值

l   init方法的重写过程

- (id)init
{
// 1.一定要调用super的init方法:初始化父类中声明的一些成员变量和其他属性
// self = [super init]; // 当前对象 self
// 2.如果初始化成功,才有必要进行接下来的初始化
if (self = [super init]) { // 初始化成功 _age = 10; } return self; // 3.返回一个已经初始化完毕的值 }

3.自定义构造方法

l   构造方法的一些规范

  • - (id)initWithAge:(int)age {
        if (self = [super init]) {
            _age = age;
        }
        return self;
    }

    传递多个参数进行初始化

    - (id) initWithAge:(int)age  andNo:(int)no;

    返回值是id类型

  • 方法名都以init开头

iOS开发之oc(八)--小知识补充 init方法补充

标签:

原文地址:http://www.cnblogs.com/iOSteemo/p/4298729.html

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