Я загружаю представление, используя: "_ = vc.view", но приложение вылетает, когда я пытаюсь получить доступ к его розетке.
Как я выяснил линию сбоя?
Iполучил журнал сбоев:
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_BAD_INSTRUCTION (SIGILL)
Exception Codes: 0x0000000000000001, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Termination Signal: Illegal instruction: 4
Termination Reason: Namespace SIGNAL, Code 0x4
Terminating Process: exc handler [3342]
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 MyApp 0x0000000345345 0x10d9bd100 + 223945
Я использовал DSYM & atos и получил аварийную строку:
firstContainer = AppFactory.shared.buildAtomPresenterContainer(for: vc.firstContainerView)
AppFactory.shared - неопциональное статическое let. И никакие другие потоки не выполняли мой код.
Воспроизводимость: только один журнал сбоев. (Никакой дополнительной информации, предоставленной пользователем) Всегда работал нормально, кроме случая. Я не могу воспроизвести проблему.
Код:
class TwoComponentsSplitViewPresenterImpl: TwoComponentsSplitViewPresenter {
let vc: TwoComponentsSplitViewController
let firstContainer: AtomPresenterContainer
let secondContainer: AtomPresenterContainer
init() {
let name = NSNib.Name("TwoComponentsSplitViewController")
vc = TwoComponentsSplitViewController(nibName: name, bundle: nil)
// preload
_ = vc.view
firstContainer = AppFactory.shared.buildAtomPresenterContainer(for: vc.firstContainerView)//< - - - Crashes here
secondContainer = AppFactory.shared.buildAtomPresenterContainer(for: vc.secondContainerView)
}
}
class TwoComponentsSplitViewController: NSViewController, NSSplitViewDelegate {
@IBOutlet weak var splitView: CustomizedSplitView!
@IBOutlet weak var firstContainerView: NSView!
@IBOutlet weak var secondContainerView: NSView!
}
Я прочитал вопрос , но приложение всегда падает там, и у меня естьтолько сбой, поэтому я решил, что проблема в другом.
Я думал о прямом вызове loadView () . Но сказано, что мой способ загрузки является подходящим:
Не вызывайте этот метод. Если вам требуется, чтобы этот метод вызывался, откройте свойство view.
- XCode (где был создан архив): Версия 10.1 (10B61)
- Версия ОС (при сбое)состоялся): Mac OS X 10.15 (19A583)