“初始化时不兼容的类型”错误没有意义
我已经多年的Java程序员,但只有iPhone/Obj-c几个月。每当我觉得我对这种语言感到舒服时,就会发生一些奇怪的事情。为什么下面的代码生成“初始化时不兼容的类型”编译错误?看起来很直截了当。 '双'是一个原始的权利?!?“初始化时不兼容的类型”错误没有意义
-(void) testCalling{
double myDoub = [self functionReturningDouble:3.0];
}
-(double) functionReturningDouble:(double) input{
return 1.0;
}
尝试交换方法声明。它可以是范围的问题,因为乔治注意到:
-(double) functionReturningDouble:(double) input{
return 1.0;
}
-(void) testCalling{
double myDoub = [self functionReturningDouble:3.0];
}
在Objective-C(这是有效的C),一种方法不“存在”,只有当它已被定义或之前声明。
相反,方法签名仅在这些情况下已知:) – 2010-06-22 12:37:06
谢谢!不敢相信花了这么长时间才发现这一点。 – 2010-06-22 23:45:44
只是另一点..出于利益为什么顺序似乎不是一个int方法的问题,但只有双重? – 2010-06-30 05:37:46
是以前声明的第二种方法吗?否则,返回类型被假定为'id'。 – 2010-06-22 08:33:33
另外,在实现('.m')文件顶部的类扩展中声明私有/内部方法是一种很好的做法。这种做法消除了对私人/内部方法的实施和使用的依赖。 (Apple Docs:http://devworld.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjectiveC/Articles/ocCategories.html#//apple_ref/doc/uid/TP30001163-CH20-SW2) – ohhorob 2010-06-30 04:52:27