我是iOS编程的新手,并编写了一个练习应用程序来根据用户位置执行任务。
我希望拥有一个带有简单静态函数的MyLocationManager
包装类,类似于
+(CLLocation *) getCurrentLocation;
所以它可以被普遍称为。但是我发现通常检索位置的方法是实现CLLocationManagerDelegate
接口以获得成功/失败处理程序,并且通常将代码放在控制器中。
我想知道是否有建议的方法来制作像我提到的这样的集中式实用程序类,并且很好地包装检索位置代码而不存在于许多不同的控制器中?
答案 0 :(得分:1)
IMO,您想要存档的内容不是最佳做法。 我认为在这种情况下最整洁的方法是使用块作为完成处理程序。 它看起来像这样
@implementation YourController
-(void)updateLocationAndDoSomething
{
[Utilities startUpdateLocationWithCompletionHandler: ^ (CLLocationCoordinate2D location, BOOL *successed){
//your custom code here
}];
}
@end
这是一个易于理解的关于块http://www.appcoda.com/objective-c-blocks-tutorial/的教程,以防您不知道如何
第二种方式,使用delegation
,您的控制器将如下所示
@implementation YourController
-(void)gotLocationAndDoSomething:(CLLocationCoordinate2D) location
{
//your custom code here
}
-(void)failedToGetLocation
{
}
@end
如果您尝试将它们全部放入一个Utility类中,可能在某些情况下可能会出现,但它会很快变得难看并且很难维护。
答案 1 :(得分:0)
可能不是理想的方式,但是现在,将变量存储在你的appDelgate中,并在需要时从那里抓取它。
如果你需要不止一次调用这个函数,那么是的,修补一个Utils类并将所有的实用程序/其他方法放在那里。
将课程包括在您需要的地方并获取您的位置。