应用程序我目前正在进行一段时间没有构建错误,因为升级到xCode 4后,为此代码的最后一行提供了不兼容的类型警告...
locationManager = [[CLLocationManager alloc] init];
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
locationManager.delegate = self;
有趣的是,在清理和构建之后,xCodes报告没有问题。但是,如果我转到包含此代码的类,则会突然出现构建错误,直到我再次执行清理为止。
实际警告是......
警告:语义问题:从“类”
分配给'id'的指针类型不兼容
CLLocationmanager工作正常,我的委托方法被调用,所以一切似乎都正常工作。我想摆脱这个警告。我应该忽略它吗?
答案 0 :(得分:24)
您是否声明您的委托对象遵循CLLocationManagerDelegate协议?我通常在类扩展中执行此操作,而不是MyObject的头文件。
@interface MyObject()<CLLocationManagerDelegate>
@end
或在Swift中
@objc class MyObject: NSObject, CLLocationManagerDelegate
{
// implement whichever of the optional protocol functions you need
}
答案 1 :(得分:4)
不一致的警告似乎是一个错误。但真正的问题是上面代码中的self
类是否已声明为实现CLLocationManagerDelegate
协议。如果你实现了正确的方法,那么无论它是如何声明的,它都会起作用。但是如果类声明中不包含<CLLocationManagerDelegate>
,那么编译器会抱怨。如果您没有,那么修复类声明应该修复警告。
答案 2 :(得分:3)
我认为你应该向Apple提交一份错误报告,直到他们对此做了一些事情我想你所能做的就是忽略它。
答案 3 :(得分:2)
我认为您必须将.h文件中的CLLocationManagerDelegate添加为
@interface MyViewController : UIViewController <CLLocationManagerDelegate>
答案 4 :(得分:2)
我也有同样的情况。
添加下面的行,然后警告消息就会消失。
#import <CoreLocation/CLLocationManagerDelegate.h>