在方法中使用ViewController类作为参数

时间:2014-07-15 02:40:15

标签: ios viewcontroller

美好的一天。我是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'。

请帮忙。谢谢你。

1 个答案:

答案 0 :(得分:0)

首先,从风格上看,如果变量是一个viewController,你的变量不应该是view,但这不会导致错误或警告,对于阅读代码的人来说,这只会让人感到困惑。

其次,你传递了一个locationManager变量,但是在写它之后,所以它没有用处。

最后,您收到警告的原因是因为delegate的{​​{1}}属性被声明为CLLocationManager,但您正在分配UIViewController。现在,可能是您的特定UIViewController实例实现了id<CLLocationManagerDelegate>,但编译器不知道它,因此它会发出警告。如果在运行时一切顺利,它将起作用,但如果某人传递了实现CLLocationManagerDelegate的UIViewController实例,则当位置管理器尝试调用委托方法时,您可能会收到异常。

你应该写 -

CLLocationManagerDelegate