Apple が HMHomeManager の複数のインスタンスを作成することを許可している理由と、その目的は何ですか?
HMHomeManager のインスタンスはシングルトンであることが期待されます。
私は Apple を代弁することはできませんがHMHomeManager
、シングルトンであることでメリットが得られるケースは見当たりませんし、いくつかの明らかなデメリットもあります。
HMHomeManager
プロパティを持っていdelegate
ます。デリゲート パターンは、デリゲートが単一のデリゲートにメッセージを送信する場合、または多くのデリゲータがデリゲートを共有する場合に適しています。HMHomeManager
ただし、シングルトンの場合のように、1 つの委任者が多くの委任者に関心のあるメッセージを生成する可能性がある場合は役に立ちません。HMHomeManager
は、そのオブジェクトが不要になった場合でも、ホーム データベースへの変更を監視するメモリ内にそのオブジェクトを保持します。HMHomeManager
永遠に成り立たない可能性があります。1 つHMHomeManager
に多くのホームを含めることができますが、それらはすべて共通のユーザーを共有します。このクラスをシングルトンとして設計すると、アプリが一度に複数のユーザーに代わって動作することができなくなります。そのような動作がまったく必要ない場合でも、開発者は、設計プロセスの早い段階でサポートできないインターフェイスを選択しないようにするのが賢明かもしれません。HMHomeManager の複数のインスタンスを作成しないでください。以下のコードが役立つ場合があります。既存の家に変更を加えたい場合は、部屋、ゾーンの追加などの変更を行った後にコードを実行してみてください...
for(HMHome *home in appDelegate.homeManager.homes)
{
if([home.name isEqualToString:appDel.selectedHome.name])
{
appDel.selectedHome = home;
}
}