Obj-C: 类的实例化和 初始化

在面向对象语言中, 对象是程序运行时实际存在的数据, 而类不是. 我们要先把类实例化,初始化然后才能使用对象.

实例化:就是告诉运行时按照类的定义为对象分配内存, 返回内存指针;

  对象的内存大小=父类的内存大小+自己的实例变量需要的内存大小, 指针是4B, 父类的内存大小最小是4B, 就是NSObject的唯一实例变量isa指针需要的内存空间.

初始化: 就是将对象的变量赋初始值;

这类实例化好理解, 可是为什么初始化呢?

初始化就是将实例变量清0, 因为分配内存并不能保证内存中的值是什么, 具有不确定性, 要求初始化是为了让程序员显式地让实例变量具有确定的值. 注意,isa实例变量的值不会被清零, 因为它已经被运行时自动赋值为"类对象"的内存地址. 

 

同时, 对于对象我们要求他具有独特的状态(实例变量), 而最好不是默认初始化的空值,或者0; 所以, 最好使用带有参数的初始化方法(initWith).

类对象: 由编译器按照类的声明将其载入内存(在stack中), 可以用来创建新的对象(在Heap中), 或者用来接收消息执行类方法; 同一类的所有对象指向同一个类对象.

 

 

 

转载于:https://www.cnblogs.com/FuniOS/archive/2012/07/05/2577679.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值