当前位置: 代码迷 >> Iphone >> 初学者请问-OC中对象为什么需要初始化
  详细解决方案

初学者请问-OC中对象为什么需要初始化

热度:167   发布时间:2016-04-25 06:52:27.0
菜鸟请教---OC中对象为什么需要初始化?
Test * test = [[Test alloc]init]; //对象的初始化 以及为对象分配空间

那么初始化方法呢?

既然已经为对象分配了空间,为什么还要给方法初始化呢?


------解决方案--------------------
Objective-C 面向对象最大的特色是的消息传递(message passing)模型。Objective-C里,对象不调用方法,而是互相传递消息,这与今日的主流C++式面向对象风格差异甚大。此二种风格的差异主要在于程序如何看待调用方法/传送消息这个动作。C++里类与方法的关系非常严格清楚,一个方法必定属于一个类,且于编译期(compile time)就已经紧密绑在一起,你不可能调用一个不存在类里的方法。但在Objective-C,类与消息的关系较为松散,所有方法都被视为对消息的回应,而调用方法则视为对类发送消息。所有消息处理直到运行期(runtime)才会动态决定,并交由类自行决定如何处理收到的消息。也就是说,一个类不保证一定会回应收到的消息,如果类收到了一个无法处理的消息,程序并不会出错或当掉,它只会抛出一个Exception。
所以第一点先不要把它当成一般面向对象语言
Objective-C创建对象需通过两个消息:alloc以及init。alloc的作用是分派存储器空间,init则是对对象做初始化。 init与alloc都是定义在NSObject里的类方法,当对象收到这两个消息并做出正确回应后,新实体才算准备妥当
  相关解决方案