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标签下
答案 0 :(得分:2)
它可能会崩溃,尽可能接近我们。一般来说,这意味着如果你不实现它,某些东西将无法工作,但文档并不尽可能准确。在某些情况下,使用委托的类不会检查委托实际上是否实现了指定的方法,因此无论何时调用它都会得到异常。因此,如果文档说它是必需的,那么最好实现它,即使你的实现是一个空方法。
答案 1 :(得分:1)
在这种特殊情况下,在iOS 6(及更新版本)操作系统上调用“locationManagerDidPauseLocationUpdates
”来通知您的应用程序位置没有变化,并且它正在关闭以节省电量。
在iOS 5上,这个委托方法不会被调用,但是如果你实现它,将在iOS 6中被调用。
如果你的目标是iOS 6(而不是iOS 5),如果你没有实现任何“必需的”委托方法,你将收到编译器警告。