对于新的iOS 9 Beta 5和watch os 2固件,我遇到了一些非常奇怪的事情。
我正在尝试使用这段代码,如果用户还没有授予访问权限,这段代码应该会弹出一个警报,请求访问日历的权限。问题是,即使用户没有授予访问日历的权限,警报也不会出现:
if ([store respondsToSelector:@selector(requestAccessToEntityType:completion:)])
{
NSLog(@"Monkey");
[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error)
{
NSLog(@"Banana");
/*
more code here
*/
}
}
在代码中添加断点后,我推断出这一行是问题所在:
[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
这行之后的任何内容都不会执行,因此警报永远不会显示。然而,如果我在模拟器上运行watchkit应用程序,而不是我自己的手表和iPhone,同样的线路也会起作用。尽管我对granted
有一个if-else语句,但是这个语句不会执行因为{
之后的任何东西都不会执行。这意味着日志将不显示Banana
,只显示Monkey
。当我在自己的设备上进行测试时,就会出现这种情况。在模拟器上,这两个都将显示,并且访问日历提醒也将出现。
同样值得注意的是,当iOS 9 Beta 3发布时,同样的代码在我自己的设备和模拟器上运行得非常好。大约一周前,当我把手机升级到iOS 9 Beta 5时,我就遇到了这个问题,所以我有理由相信这可能是某种bug。