我正在为班级的最终项目制作一个应用程序,我需要在应用程序的不同视图中共享字符串、整数和浮点数。我必须创建一个供服务员在工作中使用的应用程序。我需要针对不同类型的订购商品(饮料、开胃菜、主菜等)使用不同的视图,并且需要将所选的商品、价格和数量保留在不同的视图中,以保持每个视图中可用的运行总计(每种类型的商品都有一个视图),最后是一个显示所订购商品和总计的逐项列表的视图。
据我了解,我不想使用选项卡栏应用程序布局,因为通常用户不希望不同选项卡式视图之间的信息相同,因此我正在考虑为此使用分段控制器。要获取视图之间共享的字符串、整数和浮点数,可以在 AppDelegate 中声明它们吗?我读过我可以使用单例,但我们没有在我的课程中介绍这一点,所以我认为这可能会增加比我需要的更多的复杂性。如果我要在 AppDelegate 中声明它们,我必须在AppDelegateViewController.m
让它们始终可用?我无法想象我必须为每个不同的 ViewController 合成它们。或者会NSUserDefaults
适合这种情况吗?
如果我在 AppDelegate 中声明了一个实例变量,那么它实际上会成为一个全局变量吗?我知道这违反了封装实践,但这不会对这个应用程序产生太大影响,它不会出现在 App Store 中,考虑到这将是一个相对较小的应用程序,开销应该不会产生太大影响。
预先感谢大家。如果期末考试还临近的话,祝你好运!
Edit
我想我应该说这将是一个糟糕的应用程序,我们没有涵盖很多更高级的主题,例如 iOS 的 MVC 范例,所以我能做的事情非常有限与我们应该做的事情相比。愚蠢的课程,我很后悔报名参加了它,因为我真的可以自己去做这件事并更好地了解 Objective-C(我们没有学到任何东西),并更好地了解 iOS 框架。
基本上,如果我在中声明变量AppDelegate
,即使这是一个失礼行为,这是否可以从不同的视图访问字符串等?或者会NSUserDefaults
在这种情况下有更好的解决方案吗?我倾向于 NSUserDefaults 并在项目中声明它们ViewController
.
典型的 Objective C MVC 解决方案是将所有相关的共享字符串和变量作为属性放入 Model 对象(为此对象创建一个新类)。然后与需要访问这些变量或字符串的所有控制器共享该模型对象。
使用 AppDelegate 作为模型对象是“过度共享”,并且会使应用程序委托与非委托相关的内容变得混乱。一个稍微简洁的解决方案是让应用程序委托持有一个在整个应用程序中广泛使用的 Model 对象的 getter。可能导致代码重用问题且被认为政治不正确的解决方案是将模型对象和/或共享变量本身分配给 C 全局变量(请小心保留)。 (但是,如果您关心这些事情,这通常会生成最快且数量最少的代码。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)