我正在尝试调试以下崩溃,并且对此错误的含义有点无能为力。我是通过iPhone上的应用程序从用户那里得到的,崩溃来自Crashlytics。
崩溃标题为:EXC_BREAKPOINT 0x00000000e7ffdefe 崩溃:com.apple.main-thread
线程:崩溃:com.apple.main-thread 0 Mutual
0xfff58 AlbumViewController。(getFacebookAlbums(() - >()?) - > ())。(闭包#1)(AlbumViewController.swift:78)1 Mutual
0xfe95c部分适用于AlbumViewController。(getFacebookAlbums(() - > ()?) - > ())。(闭包#1)(AlbumViewController.swift)2 Mutual
0xfe95c部分适用于AlbumViewController。(getFacebookAlbums(() - > ()?) - > ())。(闭包#1)(AlbumViewController.swift)3 FBSDKCoreKit
0x5a2661 - [FBSDKGraphRequestMetadata invokeCompletionHandlerForConnection:withResults:error:] + 96
它指向的代码(AlbumViewController的第78行)是这个函数的结束括号:
func getFacebookAlbums(completion: (() -> Void)? = nil){
FBSDKGraphRequest(graphPath: "me/albums?fields=name,picture,count&limit=16&offset=\(offset)", parameters: nil).startWithCompletionHandler { (connection: FBSDKGraphRequestConnection!, result: AnyObject!, error: NSError!) -> Void in
if let albumData = result["data"] as? NSArray{
for album in albumData{
let albumName = album["name"] as? String ?? ""
let albumId = album["id"] as? String ?? "-1"
let count = album["count"] as? Int ?? 0
var coverURL = ""
if let picture = album["picture"] as? NSDictionary{
if let pictureData = picture["data"] as? NSDictionary{
coverURL = pictureData["url"] as? String ?? ""
}
}
let newAlbum = AlbumData(name: albumName, id: albumId, coverURL: coverURL, photosCount: count)
self.albums.append(newAlbum)
}
self.albumView.tableView.reloadData()
self.albumView.tableView.hidden = false
self.albumView.loadingView.hideLoadingView()
completion?()
self.downloadAlbumThumbnails()
}
}
}
如果错误太模糊,则很难调试。有没有人对导致这种情况的原因有任何了解?
更新
这是我从Crashlytics
获得的屏幕这是方法调用和闭包内容:
getFacebookAlbums { () -> Void in
self.albumView.activityIndicator.stopAnimating()
self.albumView.refreshContorl.endRefreshing()
}
答案 0 :(得分:0)
你必须传递 self 的弱引用。当 self 从内存中移除时,闭包仍然可以存活并尝试调用 self 并发生崩溃。