Objective-C 合成

 

  在接下来的时间里面,我们准备为大家介绍Objective-C中的"合成"。

 

  (1)合成:在一个类中可以包含其它类所定义的对象,就称为合成。

  (2)当为类分配内存空间时,是不会为它里面的其它类的对象分配内存空间。

     所以,要为类中的其它类的对象,定义分配内存空间的方法。

        

 

 

 接下来,我们结合例子作进一步的学习。

 

//=====================//

//-------定义了weapon类------//

//=====================//

@interface weapon : NSObject   //定义了武器类weapon
{
 @public
  int  wx;    //武器的X坐标属性
  int  wy;     //武器的Y坐标属性
}

 

 +(id)  initwp;   //定义了用于为武器类对象分配内存空间的方法initwp

@end

 


@implementation weapon


 +(id) initwp    //实现武器类对象分配内存空间的方法initwp
 {
  id tmpobj = [ [ weapon alloc ] init ]; //分配内存空间,并返回对象给id类型变量tmpobj。
  return  tmpobj;   //返回分配内存空间后的weapon类对象tmpobj
 }

@end

 

 

//===================//

//-------定义了Role类------//

//===================//

@interface Role : NSObject  

{

 @public

  int x;

  int y;

  weapon *wp;     //定义了weapon类的对象wp(这样就是合成)
}

@end




//-------入口函数main-----//

int main (int argc, const char * argv[]) {

 

 Role  *r1 = [ [ Role alloc ] init ];  //通过类Role定义了对象r1,并分配了内存空间与初始化。

 

 r1->wp = [ weapon initwp ]; //调用weapon的类方法initwp为wp对象分配内存空间


  r1->wp->wx = 100; //通过r1对象调用合成后的wp对象,再通过wp对象调用wx属性并赋值为100。

}

 

 小结:

   如果上面的代码中,没有执行[ weapon initwp ] 为r1->wp对象分配内存空间,

   那么,当我们执行 r1->wp->wx = 100 时就会报错,因为,在没有为wp对象分配内存空间时就调用它

   里面的属性或方法都会报错。

 

 

 

  非常好,现在,我们已经掌握了Objective-C中的“合成”这个知识点,但是,如何去运行用它呢?所以,我们就要通过下方的按钮进入到游戏中,然后,运用它去完成任务,这样,才可以加深大家对每个知识点的理解和运用,以及“尽快进入到编程的状态”

 

  不要停留在理论规则上面,快动起来吧!

 

 

(通过游戏模式学习与训练,需要在电脑上运行)

进入游戏学习与训练