黑马程序员技术交流社区

标题: 关于 init 的一些问题 [打印本页]

作者: wodeheimalife    时间: 2015-4-29 08:58
标题: 关于 init 的一些问题
下面的两行代码,在内存中是什么区别?
1: Person * p = [[Person  alloc ]  initWithAge: 20];
2:  Person * p = [[Person  alloc ]  init ];
    p.age = 20;
最后出来的结果是一样的,可是这两种赋值操作区别在哪?
作者: 冰儿    时间: 2015-4-29 21:32
Person * p = [[Person  alloc ]  initWithAge: 20];
这个是有参的初始化
Person * p = [[Person  alloc ]  init ];
这个是无参的初始化

个人认为有参的初始化方便使用
作者: darewolf    时间: 2015-4-29 21:37
Person  *p = [[Person alloc] initWithAge:20];在类实现中,要自己重新实现init构造方法,使创建的对象年龄直接就是20
作者: shenxian88    时间: 2015-4-29 21:39
第一个是先重写init方法然后传入age参数,
第二个是创建好对象以后,对象通过调用age的set方法进行初始化
作者: pangang    时间: 2015-4-30 07:49
我觉得一样的,第一种写的比较多
作者: 星空眼泪    时间: 2015-4-30 09:28
同意楼上的,我个人也感觉没有什么差别,还没有学到内存管理那块,是不是在内存分配会有什么不同的
作者: lyricdon    时间: 2015-4-30 09:45
第一个是带参数初始化,第二个是初始化再将参数带入,
就好比 int a=1 ;和   int a; a=1 ; 本质上没有区别
作者: shuizhuqing    时间: 2015-5-1 11:17
有参初始化内部还是调用的无參后,赋值




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2