2017-03-15 44 views
0

我目前正試圖在我當前的項目中實現可達性。我在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中做所有事情,真的有很大的不同嗎?它會改變任何事情的結果嗎?目前它運行正常,但我不確定是否正確,我不希望它在將來影響我。任何幫助將是偉大的!謝謝。

+0

最大的區別是viewDidLoad在其生命中發生一次對象,而viewDidAppear可能在任何時候現有控制器的視圖變爲可見時發生。據推測,你只需要設置一次可達性關閉。無論您是進行一次「開始」還是關閉並開啓視圖更改可見性都取決於您。 –

回答

0

這取決於您的需求。

如果你想使用Reachability ...

  • ...動態只有在這期特別是最前面的,startNotifier()viewWillAppearviewDidDisappearstopNotifier()

  • ...在這個特定的視圖中,只要視圖是活着的/加載的startNotifier()viewDidLoad

  • ...全部在全部視圖中放置整個代碼在AppDelegate併發布通知。

相關問題