我想知道为什么Apple允许创建HMHomeManager的多个实例以及它的目的是什么?
我希望HMHomeManager的实例是单例。
答案 0 :(得分:4)
我无法代表Apple发言,但我认为HMHomeManager
不会因为单身人士和几个明显的劣势而受益。
HMHomeManager
具有delegate
属性。当您希望委托者将消息发送给单个委托或许多委托人可能共享委托时,委托模式很有效。但是,当一个委托人可能产生许多代表感兴趣的消息时,如果HMHomeManager
是单身人士,情况就是如此。 HMHomeManager
作为单身人士的任何应用程序都会将该对象保留在内存监视中,以便更改主数据库,即使不再需要它。HMHomeManager
可能不会永远存在。虽然一个HMHomeManager
可以包含许多家庭,但他们都共享一个共同的用户。将此类设计为单例将阻止应用程序立即代表多个用户。即使不需要这样的行为,开发人员也可能明智地避免选择在设计过程早期无法支持它的接口。答案 1 :(得分:1)
不要创建HMHomeManager的多个实例。可能下面的代码会有所帮助。如果您想对现有的主页进行任何更改,请在执行更改后执行代码,例如添加空间,区域...
for(HMHome *home in appDelegate.homeManager.homes)
{
if([home.name isEqualToString:appDel.selectedHome.name])
{
appDel.selectedHome = home;
}
}