我的视图会在我的应用中的不同屏幕上显示。我不想从每个屏幕分配和初始化视图。我认为这可以通过两种方法来完成:
1)初始化App Delegate中的视图并从所有屏幕访问该视图。 (注意:我不想在窗口上添加视图,因为我的应用程序仅支持横向方向,这将导致很多意大利面条代码来管理视图方向。)
2)改为使用单身视图
现在,关于Singleton模式一般是好还是坏的问题一直存在争议。另外,我知道对视图控制器使用单例视为bad idea。
有没有更好的方法来实现这个目标?
答案 0 :(得分:1)
使用单例并不是一个坏主意,它实际上是一个可靠的模式,允许在整个应用程序生命周期中存储快速访问的数据。 NSUserDefaults
,NSFileManager
,NSNotificationCenter
和许多其他Apple默认类都使用单例模式。如果你的视图占用太多内存(例如它上面有很多繁重的图形资源),那么你应该有一个类,每次调用它时都会创建该视图并将其加载到内存中一段时间后视图如果您的视图重量很轻,您应该静态创建它并使用单例类在整个App的生命周期中保持活动状态。
答案 1 :(得分:0)
使用单例或使用app委托的属性是完成相同操作的等效方法。人们也可以使用传递给所有“利益相关方”的共同结构。
您选择的取决于您 - “理想”选择取决于具体情况。
但是,要注意结束几十个或几百个单身人士 - 这通常表明你的设计没有经过深思熟虑。
答案 2 :(得分:0)
单身人士是现代的全球变量,所以除非绝对必要,否则我会尽量避免使用它们。使用Apple的低记忆全局变量在移植到Carbon时会引起各种各样的问题。
如果您要维护库,请注意每个库都会有一个单例实例,因此您需要注意访问它们的人员。我使用Loki单例实现(C ++)遇到了这个问题,尽管Objective-C单例也会有同样的问题。
答案 3 :(得分:0)
我的视图会在我的应用中的不同屏幕上显示。一世 不希望从每个屏幕分配和初始化视图。
为什么您不想根据需要创建视图?视图使用大量内存:
非视网膜iPhone上的半屏视图(240 * 320)只需要300像素的像素。
视网膜显示器上的相同视图需要1.2MB
仅凭这个原因,只有在您真正需要时才分配您的公共视图似乎是一个非常好的主意。当视图没有显示时,挂在视图上没有任何好处。