A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wodeheimalife 中级黑马   /  2015-4-29 08:58  /  782 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

下面的两行代码,在内存中是什么区别?
1: Person * p = [[Person  alloc ]  initWithAge: 20];
2:  Person * p = [[Person  alloc ]  init ];
    p.age = 20;
最后出来的结果是一样的,可是这两种赋值操作区别在哪?

7 个回复

倒序浏览
Person * p = [[Person  alloc ]  initWithAge: 20];
这个是有参的初始化
Person * p = [[Person  alloc ]  init ];
这个是无参的初始化

个人认为有参的初始化方便使用
回复 使用道具 举报
Person  *p = [[Person alloc] initWithAge:20];在类实现中,要自己重新实现init构造方法,使创建的对象年龄直接就是20
回复 使用道具 举报
第一个是先重写init方法然后传入age参数,
第二个是创建好对象以后,对象通过调用age的set方法进行初始化
回复 使用道具 举报
我觉得一样的,第一种写的比较多
回复 使用道具 举报
同意楼上的,我个人也感觉没有什么差别,还没有学到内存管理那块,是不是在内存分配会有什么不同的
回复 使用道具 举报
第一个是带参数初始化,第二个是初始化再将参数带入,
就好比 int a=1 ;和   int a; a=1 ; 本质上没有区别
回复 使用道具 举报
有参初始化内部还是调用的无參后,赋值
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马