美好的一天。我是iOS的新手。我正在创建一个静态库,我有一个接受viewcontroller的方法,所以我在这个标题中导入了uikit。
myclass.h
#import <UIKit/UIKit.h>
在我的实现类中我有这个方法可以接受视图控制器,但是我只能有UIViewController类。
myclass.m
- (void) initializeLocationManager: (CLLocationManager *) locationManager fromViewController: (UIViewController *) view{
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = view;
}
所以我收到警告:从不兼容的类型'UIViewController * _strong分配给'id'。
请帮忙。谢谢你。
答案 0 :(得分:0)
首先,从风格上看,如果变量是一个viewController,你的变量不应该是view
,但这不会导致错误或警告,对于阅读代码的人来说,这只会让人感到困惑。
其次,你传递了一个locationManager
变量,但是在写它之后,所以它没有用处。
最后,您收到警告的原因是因为delegate
的{{1}}属性被声明为CLLocationManager
,但您正在分配UIViewController。现在,可能是您的特定UIViewController实例实现了id<CLLocationManagerDelegate>
,但编译器不知道它,因此它会发出警告。如果在运行时一切顺利,它将起作用,但如果某人传递了不实现CLLocationManagerDelegate
的UIViewController实例,则当位置管理器尝试调用委托方法时,您可能会收到异常。
你应该写 -
CLLocationManagerDelegate