2016-05-26 10 views
1

私はlocationプロパティを持つCoreLocationシングルトンを持っています。私は場所を取得したときに、私は他のコントローラにその場所が受信されたことを通知する必要があります。しかし、私はKey Value ObservingとNSNotificationCenterの使用の間に挫折しています。私は現在、KVOを使用して設定していますが、KVOプロパティがnilの場合はクラッシュするようです。これを行う最善の方法はどれですか?KVOまたはNSNotificationCenterを使用すべきですか?

答えて

2

KVOは非常にトリッキーでハッキーです(あなたが発見したように、クラッシュするのは簡単です)。可能であれば、特に(ここでは)匿名で放送することが目標である場合は、通知を使用してください。

+0

これを正しく設定したかどうかも疑問です。たとえば、プロパティが「動的」でない場合、それはSwiftで見ることができません。私はたぶんKVOが悪いので、あなたにそれを言ってはいけませんが、私の警告にもかかわらずKVOを使用したいと思うかもしれません: – matt

+0

ありがとうございます。実際、私はそれをダイナミックに設定していませんでした...それは奇妙なクラッシュから離れて作業していました。私はlocation変数の周りに 'willChangeValueForKey(" location ")'と 'didChangeValueForKey(" location ")'を使用しました。このキーワードを追加すると何が行われますか? – Tometoyou

+0

KVOはどのように機能しますか?これは、あなたのプロパティのセッターを効果的にメソッドswizzles。 (真実はより複雑ですが、私はKVOを悪魔の作品とみなしています。)プロパティが「動的」でなければ、それはできません。あなたの「意志」と「した」は必要性を取り除いた。 – matt

関連する問題