【问题标题】:assigning self to CLLocationManager.delegate generates incompatible type warning将 self 分配给 CLLocationManager.delegate 会生成不兼容的类型警告
【发布时间】:2011-04-06 20:14:41
【问题描述】:

自从升级到 xCode 4 以来,我目前正在开发的应用程序已经有一段时间没有构建错误,一直给我此代码的最后一行不兼容的类型警告...

locationManager = [[CLLocationManager alloc] init];
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
locationManager.delegate = self;

有趣的是,在清理和构建之后,xCodes 没有报告任何问题。但是,如果我转到包含此代码的类,构建错误会突然出现并一直存在,直到我再次进行清理。

实际的警告是……

警告:语义问题:从“类”分配给“id”的指针类型不兼容

CLLocationmanager 工作正常,并且我的委托方法被调用,因此一切似乎都正常工作。我想摆脱这个警告。我应该忽略它吗?

【问题讨论】:

    标签: iphone xcode warnings cllocationmanager


    【解决方案1】:

    您是否声明您的委托对象遵循 CLLocationManagerDelegate 协议?我通常会在类扩展而不是 MyObject 的头文件中执行此操作。

    @interface MyObject()<CLLocationManagerDelegate> 
    @end
    

    或在 Swift 中

    @objc class MyObject: NSObject, CLLocationManagerDelegate
    {
    // implement whichever of the optional protocol functions you need
    }
    

    【讨论】:

      【解决方案2】:

      不一致的警告似乎是一个错误。但真正的问题是上述代码中self 的类是否已声明为实现CLLocationManagerDelegate 协议。如果您实现了正确的方法,那么无论它是如何声明的,它都会起作用。但是如果类声明中没有包含&lt;CLLocationManagerDelegate&gt;,那么编译器会报错。如果你没有,那么修复类声明应该可以修复警告。

      【讨论】:

      • 如果没有,我认为不会调用委托方法。但是要回答您的问题,是的,该类确实声明了 协议。
      • 调用委托方法与类是否声明为实现协议无关——运行时将动态确定方法是否可用,声明仅在编译时重要。如果您确实声明了协议,我认为我们需要更多代码来确定发生了什么。
      【解决方案3】:

      我认为你应该向 Apple 提交错误报告,直到他们对此采取措施我想你所能做的就是忽略它。

      【讨论】:

      • 解决了在我的情况下,我添加了 CLLicarionManagerDelegate 协议 @interface SZChechInViewController ()
      【解决方案4】:

      我认为您必须将 .h 文件中的 CLLocationManagerDelegate 添加为

      @interface MyViewController : UIViewController <CLLocationManagerDelegate>
      

      【讨论】:

        【解决方案5】:

        我也有同样的情况。

        在下面添加一行,警告信息就会消失。

        #import <CoreLocation/CLLocationManagerDelegate.h>
        

        【讨论】:

          猜你喜欢
          • 2023-03-07
          • 2011-04-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多