在Swift中,我正在尝试构建一个简单的应用程序来运行纸牌游戏war。有两个视图控制器,一个用于正常的游戏,一个在领带的情况下。因此,在我的代码中,我有两个不同的类,一个是mainScene,另一个是tieScene。为了存储玩家有哪些牌和敌人有哪些牌,我使用两个名为“playerArray”和“敌人阵列”的数组。如果出现领带,我会从mainScene到tieScene。如何将playerArray和enemyArray的信息从mainScene类中合并,并在类tieScene中使用这些值?
我尝试过的一件事是将tieScene子类为mainScene的一部分,如下所示:
class tieScene: mainScene {...}这允许我在类playerArray和enemyArray中使用tieScene。但是,将tieScene连接到Interface中的第二个视图控制器的选项在我子类tieScene时并不存在。
所以,我有两个问题:
发布于 2015-06-17 19:20:19
这是101的东西。
子类不共享信息。
汽车和卡车都是机动车辆。
轿车和跑车都是汽车的子类。假设两个人都有一个带有无线电台属性的收音机。
如果我在轿车上换了电台,那并不意味着你可以用你的跑车询问电台,找出我在听哪个电台。
单独的对象是完全独立的,并且有它们自己的实例变量。
您可以在两个对象之间设置一个链接并定义一个在它们之间通信的协议,或者如果您想保存全局应用程序状态信息,那么您可能需要一个数据容器单例。请参阅我为讨论不同选项而创建的这个线程:
How do you share data between view controllers and other objects in Swift?
发布于 2015-06-17 19:18:11
我觉得你不明白什么是子类..。如果是子类,那就意味着子类具有与超类相同的属性,因此它将拥有数组,但它们不会持久。
您可以使用以下几种方法,最简单的方法是在tie视图中创建数组,然后在创建新的tie视图时设置数组。或者创建一个方法来使用数组设置tie视图(initWithEnemyArray.)
发布于 2015-06-17 19:19:00
您不应该像这样使用子类,也不应该使用子类来共享信息,这是对面向对象内容的误用。它将无法工作,因为当您的程序运行时,您将有一个单独的tieScene类型的实例和另一个mainScene实例。因此,您将有两个单独的数据实例,而不是一个共享的实例。您应该考虑创建一个模型类并将数据存储在那里。阅读关于MVC的文章。
关于OOP和继承,请确保您理解类和类实例之间的区别。你把一个实例和一个类混为一谈,它们不是一回事。
https://stackoverflow.com/questions/30900312
复制相似问题