问题:类方法中可以调用对象方法么?对象方法中可以调用类方法么?这个在我学习的时候有想过,后来看了MJ老师的基础视频,里面有一个实例就解决了我的疑惑:可以!!我们假设现在有一个Person类,内有年龄属性
上例:
1,写一个对象方法比较与另一个对象比较年龄
2,写一个类方法比较2个对象年龄
1,- (int ) compareAge:(Person * )p
{
return [self age]-[p age];
}
2,+(int ) compareAge:(Person * )p withOther :(Person * )p2
{
return [p age]-[p2 age];
}
有没有发现其实在类方法跟对象方法中他们内部实现基本一样,那为什么我们要重复些俩遍呢?
修改如下:
1,- (int ) compareAge:(Person * )p
{
return
[Person compareAge:self withOther:p];
}
2,+(int ) compareAge:(Person * )p withOther :(Person * )p2
{
return [p age]-[p2 age];
}
或者:
1,- (int ) compareAge:(Person * )p
{
return [self age]-[p age];
}
2,+(int ) compareAge:(Person * )p withOther :(Person * )p2
{
return [p compareAge:p2];
}
也许你会认为这样代码一点也没有少写,那是因为我的例子太简单,当有一天你碰到实例中有一大串代码要重复,你会发现这是一个多么了不起的用法呀。 |
|