1

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

CLLocationManagerDelegate

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

问题与最后一个词有关:'(必需)'

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

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

如果我不实施该方法,我的应用程序会崩溃吗?我最近移植到了ios6,但到现在还没有崩溃!
该方法没有被调用是运气,还是需要推荐?

更新:

以上信息来自 ios6.1 文档集。

当我打开ios6.1头文件时

位置管理器.h:

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

required 没有提示,都在@optional 标签下

4

2 回答 2

2

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

于 2013-07-04T20:39:37.567 回答
1

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

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

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

于 2013-07-04T20:38:33.480 回答