在應用程式中,我們可以注冊以下一組代碼來捕捉崩潰
。 signal(SIGILL) { _ in
print("Signal Kill"/span>)
}
ncaughtExceptionHandler { exception in
print("Exception caught: (exception)")
}
但是我也想在單元測驗目標中實作這一點。我怎樣才能做到這一點?
uj5u.com熱心網友回復:
如果你需要在單元測驗運行前安裝信號處理程式,你可以創建一個類似這樣的.m檔案:
// setup.m
static void __attribute__((constructor) ) setup() {
// 盡快切換到Swift :)
[MySignalHandlers installAllHandlers]。
}
,然后創建一個Swift類來完成實際作業。當然,你可以在Objective-C中撰寫信號處理程式,但由于你已經在Swift中擁有它們,你可以重用這些邏輯。
// MySignalHandlers.swift
class MySignalHandlers。NSObject {
@objc static func installAllHandlers() {
//在這里做你的事。
}
}
用__attribute__((constructor))裝飾的函式會在容納它們的二進制檔案被加載時自動執行,所以這保證了信號處理程式在任何單元測驗運行之前就被安裝了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/320053.html
標籤:
