黑马程序员技术交流社区
标题:
类方法中可以调用对象方法吗?
[打印本页]
作者:
胡铭
时间:
2014-5-5 10:34
标题:
类方法中可以调用对象方法吗?
类方法中可以调用对象方法吗?调用的时候格式是怎样的?
作者:
zfan
时间:
2014-5-5 10:42
本帖最后由 zfan 于 2014-5-5 20:14 编辑
可以的,我记得在MJ老师的圆的方法那一集视频里有过应用,因为这里和java语言有区别,所以我印象比较深,java里面静态方法是不能调用非静态的方法的,但是OC语法里面似乎对这个比较“宽容”。并且在类方法调用这个对象方法时,已经建立了该对象方法所属的对象了,所以能够调用成功。
摘录部分代码如下:
@implementation Point2D
...
- (double)distanceWithOther:(Point2D *)other
{
double xDelta = [self x] - [other x];
double xDeltaPF = pow(xDelta, 2);
double yDelta = [self y] - [other y];
double yDeltaPF = pow(yDelta, 2);
return sqrt(xDeltaPF + yDeltaPF);
}
+ (double)distanceBetweenPoint1:(Point2D *)p1 andPoint2:(Point2D *)p2; //此处类方法调用了上面的对象方法
{
return [p2 distanceWithOther:p1];
}
...
@end
复制代码
作者:
桑托尔
时间:
2014-5-5 11:18
可以,不过需要把对象方法作为形参传进去
// 人类方法的实现
@implementation Person
// 对象方法,打印自己的年龄
-(void)test
{
NSLog(@"My age is %d",_age);
}
// 类方法,但是需要传入一个Person创建出的对象
+(void)testWithPerson:(Person *)p
{
[p test];
}
@end
复制代码
这样就可以调用了
作者:
ww384661784
时间:
2014-5-5 20:47
可以啊!!!!!!!!!!!!!!!!!!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2