我收到致命异常: NSRangeException *** -[__NSArrayM objectAtIndex:]: 索引 0 超出空数组范围
但是没有调用removeObjectAtIndex,并且这种情况发生在不同的视图控制器中。我只是在寻找关于在哪里查看的想法,因为在第 3-5 行中,应用程序被赋予了控制权,但没有符号。
崩溃日志来自 Fabric/crashlytics,仅在应用程序发布后大约 30 天发生,但崩溃的实例或数量是相关的。
Thread : Fatal Exception: NSRangeException
0 CoreFoundation 0x00000001830502d8 __exceptionPreprocess + 132
1 libobjc.A.dylib 0x00000001948740e4 objc_exception_throw + 60
2 CoreFoundation 0x0000000182f3385c -[__NSArrayM removeObjectAtIndex:]
3 AppName 0x00000001000875b8
4 AppName 0x000000010008698c
5 AppName 0x00000001000867c4
6 libdispatch.dylib 0x0000000194ec5994 _dispatch_call_block_and_release + 24
7 libdispatch.dylib 0x0000000194ec5954 _dispatch_client_callout + 16
8 libdispatch.dylib 0x0000000194eca20c _dispatch_main_queue_callback_4CF + 1608
9 CoreFoundation 0x00000001830077f8 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 12
10 CoreFoundation 0x00000001830058a0 __CFRunLoopRun + 1492
11 CoreFoundation 0x0000000182f312d4 CFRunLoopRunSpecific …Run Code Online (Sandbox Code Playgroud) 解除分配时,无法在iOS 11设备上复制崩溃DetailViewController.
该应用程序有一个DetailViewController继承自BaseViewController.DetailViewController有DetailViewModel房产.
DetailViewController,BaseViewController并且DetailViewModel都是用Objective-C.我将Swift版本升级为Swift 4并添加了一个Swift扩展DetailViewModel.
@objc extension DetailViewModel {
func foo() {
let conclusionBlock: (() -> Void) = { [weak self] in
guard let strongSelf = self else { return }
strongSelf.viewController.reloadData()
}
let viewModel = OtherViewModel(conclusionBlock: conclusionBlock)
let otherViewController = OtherViewController.make(viewModel: viewModel)
let nav = UINavigationController(rootViewController: otherViewController)
nav.modalPresentationStyle = .fullScreen
viewController.present(nav, animated: true, completion: nil)
}
}
Run Code Online (Sandbox Code Playgroud)
查看日志,func foo() …