OC的对象的创建

对于alloc方法,我们最先知道的肯定是,从应用程序的虚拟地址空间上为该对象分配足够的内存。

但是不仅仅是这样,其实还做了以下3件事情:

  1. 将该新对象的引用计数 (Retain Count) 设置成 1。
  2. 将该新对象的 isa 成员变量指向它的类对象。
  3. 将该新对象的所有其它成员变量的值设置成零。(根据成员变量类型,零有可能是指 nil 或 Nil 或 0.0)


而,init方法会做真正的初始化工作,让对象的成员变量的值符合我们程序逻辑中的初始化状态。例如,NSMutableString 可能就会额外再申请一块字符数组,用于动态修改字符串。

在某些情况下,init会造成allo原本空间不够用,而第二次分配内存空间。
比如;
NSString * s = [NSString alloc];
[s init]; // 这儿 init 返回的地址可能会变。s 原本的指针地址可能是无效的地址。

为此,苹果引入了一个编程规范,让大家写的时候将 alloc 和 init 写在一行。所以上面的代码正确的写法是

NSString * s = [[NSString alloc] init];



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值