我目前正試圖在我當前的項目中實現可達性。我在YouTube上看了一個教程,但我不確定它是否是正確的做法。在Reachability文檔(https://github.com/ashleymills/Reachability.swift)中,它顯示了兩個示例,第一個示例是'Example - closures',我假設它在viewDidLoad中完成了?目前搞亂了Swift Reachability,我應該在viewDidLoad還是viewDidAppear中執行所有代碼?
//declare this property where it won't go out of scope relative to your listener
let reachability = Reachability()!
reachability.whenReachable = { reachability in
// this is called on a background thread, but UI updates must
// be on the main thread, like this:
DispatchQueue.main.async {
if reachability.isReachableViaWiFi() {
print("Reachable via WiFi")
} else {
print("Reachable via Cellular")
}
}
}
reachability.whenUnreachable = { reachability in
// this is called on a background thread, but UI updates must
// be on the main thread, like this:
DispatchQueue.main.async {
print("Not reachable")
}
}
do {
try reachability.startNotifier()
} catch {
print("Unable to start notifier")
}
和最後一個例子是「示例 - 通知」,這是我感到困惑的創造者說,這樣做,所有在viewDidAppear。如果我只是在viewDidLoad中做所有事情,真的有很大的不同嗎?它會改變任何事情的結果嗎?目前它運行正常,但我不確定是否正確,我不希望它在將來影響我。任何幫助將是偉大的!謝謝。
最大的區別是viewDidLoad在其生命中發生一次對象,而viewDidAppear可能在任何時候現有控制器的視圖變爲可見時發生。據推測,你只需要設置一次可達性關閉。無論您是進行一次「開始」還是關閉並開啓視圖更改可見性都取決於您。 –