Objective--C 对象初始化

  前言

 目前为止我们已经学习了两种不同的方法创建对象。第一种是[类名 new];第二种是[[类名 alloc]init];这两种方法是等价的,但是Cocoa惯例是使用alloc和init而不使用new。那么这两者有什么区别呢?

  1.首先new是调用了alloc 和init

  2.第二种方法的init可以选择非系统默认的,可选择性更强

  3.并且alloc分配内存的时候使用了zone,它是给对象分配内存的时候,把关联的对象分配到一个相邻的内存区域内,以便于调用时消耗很少的代价,提升了程序处理速度。

不过这里我又一点搞不明白,既然new内部调用了alloc和init,那么第三条他也应该具备的

一:分配对象

  分配(allocation)是一个新对象诞生的过程。从OS中获取到一块内存,,并指定为存放对象的实例变量的位置。向某个类发送alloc消息,就会为类分配一快足够大的内存。

  同时alloc会将该快内存区域全部初始化为0。BOOL = NO;int = 0;*ptr = nil;刚刚分配的内存必须进行初始化,才能使用,OC中明确了两个步骤:分配和初始化!缺一不可!不能忘记初始化

二:初始化对象

Car *car = [[Car alloc]init];//正确
Car *car = [Car alloc];[Car init];//错误

  这

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值