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

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

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

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

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

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

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

 

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

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

 

 

 

posted on 2012-07-05 13:39  FuniOS  阅读(234)  评论(0编辑  收藏  举报