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

解决方案 »

  1.   

    学习了,有兴趣的话,加入qq群吧,一起提高iphone专业开发群4633616
      

  2.   

    alloc的是分配空间,init则是对象初始化。
      

  3.   

    早期用的是new,后来分两步,alloc和init,为的是适应initwithXXX。
      

  4.   

    1楼 6楼说的很对 alloc分配空间 init初始化 OC里还有方便初始化如initwithFormat:等方法
      

  5.   

    建议楼主多看一些OC的基础教程 和C C++很相近 做IPHONE开发的话找点入门的书读读 做几个简单的实例就能容易上手
      

  6.   

    今天又开始复习了下,,,总结下吧 
    比如:
          Car * myCar = [Car alloc]init];
         alloc: 按照Car这个类(模板)分配内存给 myCar这个对象。
         init: 按照Car这个类(模板)创建一个实例(对象)出来。
      

  7.   

    我并未用init初始化一样可以使用对象和方法啊,那init不是没必要的吗??