【发布时间】:2013-11-05 16:22:36
【问题描述】:
我正在使用 Xcode 5/iOS SDK 6.1 进行构建。如果应用在 iOS 7.x 设备上运行,则应检查是否为应用设置了“设置 -> 常规 -> 背景应用刷新”设置。由于此属性仅在 iOS 7 上可用,我正在这样做:
if([[UIApplication sharedApplication] respondsToSelector:@selector(backgroundRefreshStatus)])
{
NSInteger outcome=[[[UIApplication sharedApplication] performSelector:@selector(backgroundRefreshStatus)] integerValue];
//do something with "outcome"
}
但是...应用程序在 iOS 7 上的“performSelector”行崩溃,这很奇怪,因为它通过了“respondsToSelector”调用?有谁知道为什么?我也尝试了 NSSelectorFromString(@"backgroundRefreshStatus") 得到相同的结果。
【问题讨论】:
-
你需要 id 结果=[[UIApplication sharedApplication] performSelector:@selector(backgroundRefreshStatus)];
-
如果使用 ARC,将整数分配给
id可能会崩溃。 -
如果您想使用 iOS 7 功能,为什么要针对 6.1 构建?
-
感谢您的 cmets。我编辑了原始帖子。它仍然在 iOS 7 设备上崩溃。
标签: objective-c ios7 xcode5