我收到了测试人员的崩溃报告,其中我的MasterViewController创建的主用户对象(显然)为nil或无效,当操作系统调用performFetchWithCompletionHandler时。我知道当应用程序进入后台时,此对象已初始化,因为除非我处于要求User对象有效的特定状态,否则我不会请求后台提取通知。
以下是MasterViewController创建的片段:
class MasterViewController: UITableViewController {
static var services = [Service]()
static var user:User!
.
.
.
override func viewDidLoad() {
super.viewDidLoad()
// Create model objects
MasterViewController.user = User()
.
.
.
}
这是使用用户对象的提取调用:
func application(application: UIApplication, performFetchWithCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
print("Background notification: In performFetchWithCompletionHandler")
if MasterViewController.user.getProviderState() == ProviderState.Offline ||
!UserAPIManager.sharedInstance.isLoggedIn {
print("Replied with .NoData")
completionHandler (.NoData)
} else {
.
.
.
}
}
崩溃就行了:
if MasterViewController.user.getProviderState() == ProviderState.Offline ||
!UserAPIManager.sharedInstance.isLoggedIn
我得到的异常类型是 - 异常类型:SIGTRAP(此测试程序是在调试中构建的。)
在强制应用程序进入后台时,我从未在调试器中看到此错误。
另外,我没有在didReceiveMemoryWarning()中释放这个User对象。
感谢任何人的洞察力。