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

时间:2012-09-04 18:30:44

标签: objective-c ios cocoa-touch

我分别构建了5个UITableViews: Continent,Country,Subcountry,Region Subregion

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

在每个导航中,我检索基本数据并使用我在每个类中定义的一组令牌变量将其传递给prepareToSegue下一个UITableView。一切都很相似。

Continent(country.ContinentID=self.continentID) 
       --> Country (region.CountryID=self.countryID)

我有一种感觉,我以某种丑陋的方式做错了。您能否以专业的方式向我建议如何更聪明地实施这项任务?我想在每个班级摆脱这一系列的int vars。

请注意请不要使用全局变量。我读到了它们here,并且全局变量被定义为比goto语句更邪恶。

2 个答案:

答案 0 :(得分:1)

一种可能的解决方案是通过一个单独的类创建所有控制器,该类将跟踪基本数据并在创建期间根据需要将它们传递给控制器​​。这在我的sample Xcode project on GitHub中有说明。远离单身人士,他们只不过是光荣的全球化,并且有许多反对他们的好论据(其中一些在this blog post中有解释)。

答案 1 :(得分:0)

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