Objective-C 动态绑定与id类型
在接下来的时间里面,我们准备为大家介绍Objective-C中的"动态绑定与id类型“。
id 类型其实与我们前面学习过的整型,浮点型,字符型等的类型是类似的,都可以用于定义变量,而有所不同的是,id 类型定义出来的变量用于存放对象。
接下来,我们看看它的语法格式:
id 变量名;
语法格式分析:
(1)id 关键字开始。
(2)变量名,按照变量命名规则定义即可。
动态绑定:
动态绑定的意义就是,对id类型定义的变量,可以赋予不同的对象,然后,再通过id类型的变量去调用类中的方法或属性。而在需要调用另一个对象的同名方法或同名属性时,只要动态改变id类型变量中的值就可以了。
接下来,我们结合例子作进一步的学习。
//===================//
//------定义了Role类-----//
//===================//
@interface Role : NSObject
{
int x;
int y;
}
- (void) Move; //移动方法
@end
@implementation Role
-(void) Move
{
x = x + 1;
}
@end
//===================//
//-------定义了Man类-----//
//===================//
@interface Man : NSObject
{
int Mx;
int My;
}
- (void) Move;
@end
@implementation Man
-(void) Move
{
Mx = Mx + 1;
My = My + 1;
}
@end
//-------入口函数main-----//
int main (int argc, const char * argv[]) {
Man *m1 = [ [ Man alloc ] init ]; //通过类Man定义了对象m1,并分配了内存空间与初始化。
Role *r1 = [ [ Role alloc ] init ]; //通过类Role定义了对象r1,并分配了内存空间与初始化。
id T; //定义了id类型变量T
T = m1;
[ T Move ]; //上一行代码执行了 T = m1,所以,T 变量中保存的是m1对象,
然后,再通过变量 T 调用Move方法,即通过m1对象调用了Move方法。
T = r1;
[ T Move ]; //上一行代码执行了 T = r1,所以,T 变量中保存的是r1对象,
然后,再通过变量 T 调用Move方法,即通过r1对象调用了Move方
}
小结:
在上面的代码中,我们定义了一个id类型的变量T,然后,就通过T去调用方法Move,而每次调用前,我们只需要动态地改变T变量中的值,即赋予T变量不同的对象,然后,就可以调用不同对象中的Move方法了。
非常好,现在,我们已经掌握了Objective-C中的“动态绑定与id类型”这个知识点,但是,如何去运行用它呢?所以,我们就要通过下方的按钮进入到游戏中,然后,运用它去完成任务,这样,才可以加深大家对每个知识点的理解和运用,以及“尽快进入到编程的状态”。
不要停留在理论规则上面,快动起来吧!
(通过游戏模式学习与训练,需要在电脑上运行)