“必需”类型的代表

时间:2013-07-04 20:33:32

标签: ios delegates cllocationmanager

ios中的required委托方法是什么? 示例:

CLLocationManagerDelegate

locationManagerDidPauseLocationUpdates:
Tells the delegate that location updates were paused. (required)

这个问题与最后一句话有关:'(必填)'

我知道有可选的委托方法,但如果我没有实现会发生什么 所有必要的代表?

特别是我没有在我的App中使用LocationManager实现上述方法, SDK是ios6,target = ios5。

如果我没有实现该方法,我的应用程序可能会崩溃吗? 我最近移植到ios6,但直到现在它还没有崩溃! 那个方法没有被调用,或者是否需要推荐,真是幸运吗?

更新

以上信息来自ios6.1 Docu set。

当我打开ios6.1头文件时

LocationManager.h:

 *  Discussion:
 *    Invoked when location updates are automatically paused.
 */
- (void)locationManagerDidPauseLocationUpdates:(CLLocationManager *)manager __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_6_0); 

没有必要的提示,它们都在@optional标签下

2 个答案:

答案 0 :(得分:2)

它可能会崩溃,尽可能接近我们。一般来说,这意味着如果你不实现它,某些东西将无法工作,但文档并不尽可能准确。在某些情况下,使用委托的类不会检查委托实际上是否实现了指定的方法,因此无论何时调用它都会得到异常。因此,如果文档说它是必需的,那么最好实现它,即使你的实现是一个空方法。

答案 1 :(得分:1)

在这种特殊情况下,在iOS 6(及更新版本)操作系统上调用“locationManagerDidPauseLocationUpdates”来通知您的应用程序位置没有变化,并且它正在关闭以节省电量。

在iOS 5上,这个委托方法不会被调用,但是如果你实现它,在iOS 6中被调用。

如果你的目标是iOS 6(而不是iOS 5),如果你没有实现任何“必需的”委托方法,你将收到编译器警告。