重写:子类方法覆盖父类方法,要求方法名和参数都相同。
重载:同一个类中的两个或两个以上的方法名相同,但是参数不同,方法体也不同。
多态动态识别
对象是不是aClass或其子类的成员?
if([audi isKIndOfClass:[Car class]]){
NSlog(@“audi is a kind of Car");
}
对象是不是aClass成员?
if([car isMemberOfClass:[Car class]]){
NSlog(@“audi is member of Car");
}
对象是不是aClass子类
if([Audi isSubclassOfClass:[Car class]]){
NSlog(@“Audi is subclass of car");
}
判断两个对象是否同一个类型
if([Audi class]==[Benz class]){
NSlog(@“audi and benz is the same class");
}
对象是否响应aSelector指定方法
if([car respondsToSelector:@selector (run)]){
NSlog(@“car responds to run method");
}
@selector()预编译指令指定选择器,其中方法名位于圆括号中。
对象调用aSelector指定的方法
SEL action;
[email protected](run);
[car performSelector : action];
等同于 [car performSelector:@selector(run)];
对像调用aSelector指定的方法,传递参数object
-(id)performSelector:(SEL)aSelector;
withObject:(id)object;
对象调用aSelector 指定的方法,传递参数object1和object2
-(id)performSelector:(SEL)aSelector;
withObject:(id)object;
withObject:(id)object;