2016-04-20 5 views
1

私は現在、NSTimerでpostNotificationを複数回使用していますが、オブザーバはそれを1回だけ受信しています。複数のNSNotificationを投稿するには?

複数のオブザーバーを追加せずに同じ通知を何回も受信する方法はありますか?

私のタイマーは、次のように作成されます。

timer = NSTimer.scheduledTimerWithTimeInterval(2.0, target: self, selector: #selector(update) , userInfo: nil, repeats: true) 

とUpdateメソッド内では、次のとおりです。

let testNotification: NSNotification = NSNotification(name: "testNotification", object: self, userInfo: nil) 
    NSNotificationCenter.defaultCenter().postNotification(testNotification) 

これは私がviewcontrollersの一つにオブザーバーを登録する方法である:

override func viewDidLoad() { 
    super.viewDidLoad() 
    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(testNot), name: "testNotification", object: nil) 
    updateView() 
} 

通常、ビューコントローラにオブザーバを追加します。

定期的な間隔でupdate()が呼び出されているため、オブザーバーが初めて通知を受け取るが再発しないため、タイマーが機能することを確認できます。

コードの詳細が必要な場合はお知らせください。

+1

通知を送信するタイマーとコードを作成するコードを表示する必要があります。 –

+0

通知を登録するコード。 –

+0

View Controllerの登録を解除するメソッドはどこに配置しましたか?たぶんviewDidDisappearまたはtestNotの内側にある – Andrea

答えて

0

あなたの状況はどうかわかりませんが、たとえば画面があり、この画面が割り当て解除または解除され、すべてのオブザーバーを削除するように設定していない場合は、同じものに対して複数のオブザーバーを生成するあなたが参照を失ったために受け取ったものではありません。助けてください

+0

私は複数の通知を受け取りたいですが、私はオブザーバを一度追加します。言い換えれば、定期的な通知のためにタイマーに同じ通知セットを使用したいと思います。 – Latcie

0

NSNotificationの新しいオブジェクトを作り直してみてください。

0

私のtestNot()関数はモーダルビューを表示し、何らかの理由で通知の通知を無効にしました。今私はどのように私はビューを提示し、通知を受信し続けることができるかを把握する必要があります。アラートビューは引き続き正しく動作します。それは、さらなる通知が受信されたときにまだ表示されているアラートビューについてデバッグコンソールにエラーを投げますが、アラートビューが閉じられるとすべて正常に戻ります。

関連する問題