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中的“合成”这个知识点,但是,如何去运行用它呢?所以,我们就要通过下方的按钮进入到游戏中,然后,运用它去完成任务,这样,才可以加深大家对每个知识点的理解和运用,以及“尽快进入到编程的状态”。
不要停留在理论规则上面,快动起来吧!
(通过游戏模式学习与训练,需要在电脑上运行)