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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© whymerain 中级黑马   /  2015-3-18 10:30  /  800 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

        对于Person这个类,[[person alloc] init]是分配内存及初始化,[[person new] init] 怎么理解?

5 个回复

倒序浏览
new和alloc/init在功能上几乎是一致的,分配内存并完成初始化。  差别在于,采用new的方式只能采用默认的init方法完成初始化,  采用alloc的方式可以用其他定制的初始化方法。
回复 使用道具 举报
+alloc分配存储空间,返回未经初始化的对象
  1. Person *p1=[person  alloc];
复制代码

-init进行初始化,返回对象本身
  1. Person *p2=[p1 init];
复制代码

以上两个过程整合为一句:
  1. Person *p=[[Person alloc] init];
复制代码

注意,alloc是类方法,而init是对象方法
回复 使用道具 举报
darewolf 发表于 2015-3-18 11:17
new和alloc/init在功能上几乎是一致的,分配内存并完成初始化。  差别在于,采用new的方式只能采用默认的in ...

[[Person new] init] 不是[[Person alloc] init]  怎么理解
回复 使用道具 举报
whymerain 发表于 2015-3-18 12:23
[ init] 不是[ init]  怎么理解

麻烦你在花一点时间看看后面的两句话。差别在于后面的。
我对我的粗心表示抱歉:new/init和alloc/init
回复 使用道具 举报
darewolf 发表于 2015-3-18 21:38
麻烦你在花一点时间看看后面的两句话。差别在于后面的。
我对我的粗心表示抱歉:new/init和alloc/init ...

已经会了,谢谢了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马