我正在为 IOS 版本开发 SkylinkJS。在网站上,很好。一切运行正常。但在 IOS 上,我使用 Swift 编写应用程序。
一切都很好,除了应用程序在尝试与房间断开连接时有时会崩溃。而且我确定这个错误来自房间断开连接。因为如果我只是去那个视图控制器并且不连接到任何房间或者只是连接到那个房间并且没有断开连接就离开。一切都会变好。
错误是:
2017-01-09 13:51:49.187237 Star Dial[8187:3318041] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[1]'
*** First throw call stack:
(0x1834c11b8 0x181ef855c 0x1833a4eac 0x1833a4d1c 0x1001bba70 0x102689218 0x102695a90 0x1001b7ee4 0x102689258 0x102689218 0x102696aec 0x10268cce0 0x102697088 0x102698e2c 0x102698b78 0x1825532a0 0x182552d8c)
libc++abi.dylib:以 NSException 类型的未捕获异常终止
按钮断开的代码:
if self.skylinkConn != nil {
self.skylinkConn?.disconnect({
print(">>> PROFILE DISCONNECTED")
if profile_before == "home" {
profile_before = ""
self.dismiss(animated: true, completion: nil)
} else if profile_before == "following" || profile_before == "follower" {
profile_before = ""
self.dismiss(animated: true, completion: nil)
} else {
profile_before = ""
let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let next = storyBoard.instantiateViewController(withIdentifier: "HomeView") as! HomeController
self.present(next, animated: true, completion: nil)
}
})
}
profile_before 来自根类。所以这不是原因。奇怪的是,这个错误只发生在某个时候......就像我打开这个控制器 30、40 次时,它会崩溃一次......有时,我打开这个页面大约 100 次并崩溃。
当然,这也不是因为记忆。我检查了内存,那段时间平均是 20-30 MB