2017-03-15 5 views
0

現在、現在のプロジェクトにReachabilityを実装しようとしています。私は働いているYouTubeのチュートリアルに従っていましたが、正しい方法であるかどうかはわかりません。 Reachabilityのドキュメント(https://github.com/ashleymills/Reachability.swift)では、最初に 'Example - closures'という2つの例が示されています。ここでは、viewDidLoadで行われていると仮定しています。これは私が混乱してしまいどこ作成者が行うことを言うである、 - 「通知例」viewDidAppearですべてのこと現在、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") 
} 

と最後の例でした。私がviewDidLoadの中ですべてをやっているのであれば、本当に大きな違いはありますか?それは何かの結果を変えるのだろうか?それは現在正常に動作しますが、私はそれが正しいかどうかは分かりません、私は将来私に影響を与えたくありません。どんな助けも素晴らしいだろう!ありがとう。

+0

大きな相違点は、viewDidLoadはそのオブジェクトの寿命中に1回発生しますが、viewDidAppearは既存のコントローラのビューが表示可能になるたびに発生するという点です。おそらく、到達可能性クロージャを一度設定するだけで済みます。ビューの視認性が変わったときに「スタート」を1回行うかオフにするかは、あなた次第です。 –

答えて

0

これは必要に応じて異なります。この特定のビューは、最前面viewWillAppearstartNotifier()viewDidDisappearstopNotifier()で動的場合にのみ

あなたはReachability ...

  • を利用したい場合は...。

  • は...限り、ビューが生きているように、この特定のビューで/ viewDidLoadstartNotifier()をロードしました。

  • ...すべてのビューでグローバルには、コード全体がAppDelegateになり、通知がポストされます。

関連する問題