Swift4, Xcode9でiOSアプリを開発しています。
ユーザーを管理するクラスを作り、ユーザーのプロフィールが更新されたらリアルタイムで表示を更新しようとしています。
しかしいくつか問題が発生してしまったのでアドバイスいただけますでしょうか。
- delegate
最初に試した方法として、ユーザークラスにデリゲートを実装し、プロフィールに変更があった際にデリゲートを通じて更新するようにしました。
一見うまく行ったのですが、画面遷移後や複数のビュー内(twitterのTLのようにtableView内に同一ユーザーの名前等が複数並んでいるようなものをご想像ください)で同じインスタンスのデリゲートを呼び出すと古い方が奪われてしまい1箇所でしか更新できない問題が発生しました。
調べた所、デリゲートを配列で複数管理する方法もあることがわかりましたが、強参照になるデメリットもあるとのことで別の方法を探すことにしました。
- NotificationCenter
次に試した方法がNotificationCenterです。
ユーザークラス内でプロフィールを変更したらNotificationCenterでpostし、更新したいview側で通知を受信・更新するように実装しました。
結果、こちらも一見うまくいきました。ですが、ログを見てみると今度は保持しているユーザークラスのインスタンス分、更新が走ってしまいました。
上記の方法では1か全か、といった状態です。
インスタンス毎の通知をインスタンス毎に区別した上で、複数の箇所で受け取る良い方法は無いでしょうか?
以上、ご回答よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。