作为 Objective-c、可可和 iPhone 开发人员的新手,我有一个强烈的愿望,希望从语言和框架中获得最大的收益。
我正在使用的资源之一是斯坦福大学 CS193P 课堂笔记,它们已经留在了网上。它包括课堂讲稿、作业和示例代码,而且由于这门课程是由苹果开发人员授课的,因此我绝对认为它是“从马嘴里说出来的”。
班级网页:
Http://www.stanford.edu/class/cs193p/cgi-bin/index.php
课程08涉及到构建一个基于 UINavigationController 的应用程序的任务,该应用程序将多个 UIViewController 推送到 UINavigationController 堆栈上。这就是 UINavigationController 的工作原理。这是合乎逻辑的。但是,幻灯片中有一些关于 UIViewController 之间通信的严重警告。
我要引用这一系列幻灯片中的话:
Http://cs193p.stanford.edu/downloads/08-navigationtabbarcontrollers.pdf
第16/51页:
如何不共享数据
- 全局变量或单例
- 这包括你的 申请委托人
- 直接依赖性使代码的可重用性降低
- 而且更难调试和测试
好吧。我同意。不要盲目地将所有用于在视图控制器之间进行通信的方法抛入应用程序委托中,并引用应用程序委托方法中的视图控制器实例。好吧。
再往前一点,我们看到这张幻灯片告诉我们 应该是做什么的。
第18/51页:
数据流的最佳实践
- 找出需要沟通的 没错
- 为视图控制器定义输入参数
- 对于向上层次结构的通信,< strong > 使用松散耦合
- 为观察者定义一个通用接口(比如委托)
这个幻灯片之后是一个占位幻灯片,演讲者显然使用 UIImagePickerController 的示例演示了最佳实践。我希望视频可以看到!:(
好吧,那么... 恐怕我的目的性没那么强。我对上面引用的最后一行也有点困惑。我一直在用谷歌搜索这个问题,发现了一篇看起来不错的文章,谈到了观察/通知技术的各种方法:
Http://cocoawithlove.com/2008/06/five-approaches-to-listening-observing.html
方法 # 5甚至将委托表示为一个方法!除了..。对象一次只能设置一个委托。因此,当我有多个视图控制器通信,我该怎么办?
好了,这就是设计好的帮派。我知道我可以很容易地做我的通信方法在应用程序委托通过引用的多个视图控制器实例在我的应用程序委托,但我想做这种事情的 对的方式。
请通过回答以下问题来帮助我“做正确的事情”: