Objective c 如何在不使用全局变量的情况下在类之间共享值?

Objective c 如何在不使用全局变量的情况下在类之间共享值?,objective-c,ios,cocoa-touch,Objective C,Ios,Cocoa Touch,我构建了5个UITable视图:大陆、国家、次国家、区域和次区域 每个UITableView的数据都存储在数据库中 在每次导航中,我都会检索基本数据并使用我在每个类中定义的标记变量集将其传递给下一个UITableView。所有这些都是相似的 Continent(country.ContinentID=self.continentID) --> Country (region.CountryID=self.countryID) 我有一种感觉,我做错了,以某种丑陋的方式。你能

我构建了5个UITable视图:大陆、国家、次国家、区域和次区域

每个
UITableView
的数据都存储在数据库中

在每次导航中,我都会检索基本数据并使用我在每个类中定义的标记变量集将其传递给下一个
UITableView
。所有这些都是相似的

Continent(country.ContinentID=self.continentID) 
       --> Country (region.CountryID=self.countryID)
我有一种感觉,我做错了,以某种丑陋的方式。你能给我一些建议,让我设想一下,如何以专业的方式更明智地执行这项任务吗?我想在每一个类中都去掉这个int变量包



请不要建议使用全局变量。我读过关于它们的文章,而globals被定义为比goto语句更邪恶。

一个可能的解决方案是通过一个单独的类来创建所有控制器,该类将跟踪基本数据,并在创建过程中根据需要将其传递给控制器。这在我的报告中有说明。远离单例,它们只不过是被美化的全局对象,有很多很好的理由反对它们(其中一些在中进行了解释)。

一个可能的解决方案是通过一个单独的类创建所有控制器,该类将跟踪基本数据,并在创建过程中根据需要将它们传递给控制器。这在我的报告中有说明。远离单例,它们只不过是被美化的全局对象,有很多好的论据反对它们(其中一些在中进行了解释)。

我建议使用单例设计模式来满足您的需求-创建“数据管理器”保存和维护您的所有数据对象,以便您可以从控制器的任何位置访问它们是很方便的,如果您实现了它,它将确保持久性和良好的性能。

我建议使用单例设计模式来满足您的需要-创建“DataManager”保存和维护您的所有数据对象,以便您可以从控制器的任何位置访问它们是很方便的,如果您实现了它,它将确保持久性和良好的性能。

+1对于此类事情,没有全局或伪全局(似乎每个人都希望将其应用程序中的每一条数据都放入应用程序代理…)。我想我唯一不同的做法是创建对象来封装您传递的数据,并将这些数据传递给适当的控制器。当然,我也希望看到其他人的答案。全球/单身人士有他们的用处,但最好先去别处看看。您可能想要的大致是Carl描述的——某种反映类集合整体状态的状态对象。但是,没有一种“主流”命令式语言对此有很好的功能,因此您必须以某种方式传递对象。+1表示没有全局变量或伪全局变量,用于此类事务(似乎每个人都希望将其应用程序中的每一条数据都扔到应用程序代理中…)。我想我唯一不同的做法是创建对象来封装您传递的数据,并将这些数据传递给适当的控制器。当然,我也希望看到其他人的答案。全球/单身人士有他们的用处,但最好先去别处看看。您可能想要的大致是Carl描述的——某种反映类集合整体状态的状态对象。不过,没有一种“主流”命令式语言能够很好地实现这一点,因此你必须以某种方式传递对象。单身汉实际上只是一个披着狼皮的全球人。我喜欢这个类比,但我强烈反对。首先,我们讨论的是类和变量——类有更大的能力来确保事情做得正确(特别是在多线程环境中),我认为这是一个好的解决方案,可以提供每个视图控制器从中获取数据的对象。但对于将信息从一个控制器传递到另一个控制器,作为向下钻取导航堆栈的一部分,这没有多大意义-实例化“细节”控制器的控制器知道细节控制器应该显示哪个项目-并且应该在显示时告诉它,而不是把这些信息发送给单身汉。@hotlicks有些人不同意。昨天我读了那些家伙发的脾气,觉得很开心。关于这个主题有很多利弊。我完全同意@Carl Veazey的观点,这种设计模式作为一种通用的数据模型更有意义,而不是“向下钻取”的具体情况。如果这是唯一的情况,那么我说失去单身汉,但是如果需要进行一些非琐碎的数据传输,那就是开始考虑的时候了。单身汉实际上只是一个披着狼皮的全球人。我喜欢这个类比,但我强烈反对。首先,我们讨论的是类和变量——类有更大的能力来确保事情做得正确(特别是在多线程环境中),我认为这是一个好的解决方案,可以提供每个视图控制器从中获取数据的对象。但对于将信息从一个控制器传递到另一个控制器,作为向下钻取导航堆栈的一部分,这没有多大意义-实例化“细节”控制器的控制器知道细节控制器应该显示哪个项目-并且应该在显示时告诉它,而不是把这些信息发送给单身汉。@hotlicks有些人不同意。昨天我读了那些家伙发的脾气,觉得很开心。关于这个主题有很多利弊。我完全同意@Carl Veazey的观点,这种设计模式作为一种通用的数据模型更有意义,而不是“向下钻取”的具体情况。如果这是唯一的情况,那么我说失去单例,但是如果需要进行一些非琐碎的数据传输-那就是开始考虑它的时候了。会不会有某种应用程序占用空间增加和内存污染?不是真的。疗法