Ios 网间网操作系统。如何不将相同的代码放入三个执行几乎相同操作的ViewController中
我正在尝试创建一个非常简单的专注游戏,我有一个问题 我有一个Ios 网间网操作系统。如何不将相同的代码放入三个执行几乎相同操作的ViewController中,ios,swift,Ios,Swift,我正在尝试创建一个非常简单的专注游戏,我有一个问题 我有一个ViewController,用户可以在这里选择难度级别(简单,普通,难)。然后,还有3个ViewController,每个ViewController都是一个新级别。游戏逻辑基本上是一样的,只有一些小事情需要改变。我可以将相同的代码复制粘贴到所有三个控制器中,这似乎不是一个好主意 我能避免这种情况吗?也许我甚至不需要3个视图控制器,但这是我有史以来的第一个应用程序,我的知识很糟糕。您可以创建协议并在视图控制器中使用这些协议 我认为您在
ViewController
,用户可以在这里选择难度级别(简单,普通,难)。然后,还有3个ViewController
,每个ViewController
都是一个新级别。游戏逻辑基本上是一样的,只有一些小事情需要改变。我可以将相同的代码复制粘贴到所有三个控制器中,这似乎不是一个好主意
我能避免这种情况吗?也许我甚至不需要3个
视图控制器
,但这是我有史以来的第一个应用程序,我的知识很糟糕。您可以创建协议并在视图控制器中使用这些协议
我认为您在这里选择了面向协议的编程,现在苹果在开发中更喜欢面向协议的编程 提示:
- 您可以使用可在不同控制器中使用的所需方法创建协议
- 您可以为所有3个视图控制器中常见的数据创建单独的模式
- 甚至我建议您使用一些架构,比如MVVM/VIP+coordinator,这在这里很有用(如果您是初学者,这是可选的)
- 您的代码将被管理
- 您将学习面向协议编程的一个非常方便的概念
- 如果您有时间并且想探索不同的体系结构,那么使用MVVM真的很好
enum GameLevel {
case easy, normal, hard
}
经典问题。复制与重用之间的斗争。这取决于您,开发人员,来决定什么感觉最好(这里没有适合所有人的解决方案)。您可以将1 VC与不同的模式/状态一起使用,并添加适当的if/else检查。但是做得太多,你就创造了一个神的对象。其他选择是使用一个基本VC(它们都是从中继承的),并只在其中放入共享代码。再次引导你走向一个神的对象。最后,使用VIPER或MVVM之类的抽象级别,只向电视提供基本数据(ViewItems或Entities)。创建基本的viewController类,并从中派生vc类,在需要时覆盖方法。如果显示实际代码,则更容易提供帮助。可以使用MVVM模式。创建视图模型可以提高可恢复性