Iphone 当存在重叠对象时,如何设计代码体系结构?

Iphone 当存在重叠对象时,如何设计代码体系结构?,iphone,objective-c,architecture,uiviewcontroller,uikit,Iphone,Objective C,Architecture,Uiviewcontroller,Uikit,我有1个主屏幕(MVC)和4个其他屏幕,它们共享约80%的图形对象。它们在一些标签文本、带有动作的按钮和其他20%的图形上有所不同。考虑到干净的面向对象代码体系结构,我已经开始将这些屏幕作为单独的UIViewController来实现。但我不喜欢有指向这4个MVC的指针和一些方法的副本,所以我将代码重写到一个UIViewController中。大多数图形对象都是我在Interface Builder中使用的UIImageView。所以,现在“统一”UIViewController的xib文件有点

我有1个主屏幕(MVC)和4个其他屏幕,它们共享约80%的图形对象。它们在一些标签文本、带有动作的按钮和其他20%的图形上有所不同。考虑到干净的面向对象代码体系结构,我已经开始将这些屏幕作为单独的UIViewController来实现。但我不喜欢有指向这4个MVC的指针和一些方法的副本,所以我将代码重写到一个UIViewController中。大多数图形对象都是我在Interface Builder中使用的UIImageView。所以,现在“统一”UIViewController的xib文件有点臃肿,上面有4个屏幕上的重叠对象。我还需要那些方法,比如showScreen1、HidesScreen2、showScreen2、HidesScreen2和其他方法,所以我对这种架构也不是很满意。我知道我不应该把这4个MVC(屏幕)和这两个代码混在一起,xib文件会更干净,但我也关心性能、节省内存负载等问题。你对此有什么看法?加载单独的UIViewController需要多少内存资源?与代码清洁度相比,节省的内存量可能不值得?同样,拥有4个独立的MVC会迫使我同时拥有4个指向主MVC的指针和4个指向主MVC中独立MVC的指针,因为我需要在这些屏幕之间进行通信和导航。另一个选项是使用通知而不是指针,但它不会更改所需关系的数量。因此,请分享您的想法和见解:)

对于共享相同设计的用户界面控件,也许您可以使用类别,这就是我在项目中所做的。我在UINavigationBar中添加了一个类别,以显示条上的纹理,为UIBarButtonim/UIButton添加了一个类别,用于返回和取消按钮,由于我的ViewController都共享相同的背景图像,因此我创建了一个UIViewController子类,其中包含默认背景图像-我应用中使用的每个视图控制器都继承自此默认视图控制器

我会坚持每个屏幕一个视图控制器


苹果不建议创建巨型笔尖(如果您是注册的苹果开发者,请查看此视频)。巨型笔尖的性能很差,加载所有对象需要很多时间,而且笔尖中的所有对象始终保留在内存中,即使对象位于当前未显示的屏幕上。每个屏幕有一个单独的nib是更好的方法。

谢谢:)UIViewController之间的通信呢?您在屏幕之间导航的方法是什么(弹出和推送UIViewController。你使用指针还是通知?使用指针/通知在屏幕之间导航的意思有点不清楚。也许你可以展示一些关于这一点的代码?好吧,我主要使用UIKit构建非常简单的游戏。有菜单、游戏中、游戏管理器和其他4个UIViewControllers:用于显示关卡任务、关卡完成信息、关卡失败和高分的屏幕。在游戏过程中,我需要在这些屏幕之间导航。例如,游戏中的MVC从菜单MVC中推送。然后,在每个关卡之前,我推送关卡任务MVC。如果玩家点击屏幕,则我弹出关卡任务MVC并推送游戏MVC.Curr显然,这4个屏幕有指向菜单和游戏MVC的指针,而这两个屏幕有指向这4个MVC的指针。指针有点乱:)我见过的一种处理这种情况的方法是在应用程序委托中声明所有视图控制器,并将一些方法添加到应用程序委托中,以便在视图控制器之间导航。由于每个视图控制器都可以访问应用程序委托,因此视图控制器本身不需要包含指向其他视图控制器的指针aps这种方法也会对你有用吗?好主意,谢谢:)还有一个问题:你到底是如何实现共享背景的?