作为Objective-c,cocoa和iPhone开发人员的新手,我强烈希望充分利用语言和框架.
我正在使用的资源之一是斯坦福大学的CS193P课程,他们已经留在网上了.它包括讲义,作业和示例代码,由于课程由Apple开发者提供,我绝对认为它是"从马的嘴里".
课程网站:http:
//www.stanford.edu/class/cs193p/cgi-bin/index.php
第08讲与构建基于UINavigationController的应用程序的任务相关,该应用程序将多个UIViewControllers推送到UINavigationController堆栈.这就是UINavigationController的工作原理.这是合乎逻辑的.但是,幻灯片中有一些关于UIViewControllers之间通信的严厉警告.
我将引用这个严肃的幻灯片:http:
//cs193p.stanford.edu/downloads/08-NavigationTabBarControllers.pdf
第16/51页:
如何不共享数据
- 全局变量或单例
- 这包括您的申请代表
- 直接依赖使您的代码不再可重用
- 而且更难以调试和测试
好.我很失望.不要盲目地将所有用于在viewcontroller之间进行通信的方法扔到app委托中,并引用app delegate方法中的viewcontroller实例.公平的'努力.
再进一步说,我们得到这张幻灯片告诉我们应该做些什么.
第18/51页:
数据流的最佳实践
- 弄清楚究竟需要传达什么
- 定义视图控制器的输入参数
- 要进行备份层次结构的通信,请使用松散耦合
- 为观察者定义通用接口(如委托)
然后,这张幻灯片后面会出现一个占位符幻灯片,然后讲师显然会使用UIImagePickerController的示例演示最佳实践.我希望这些视频可用!:(
好吧,所以...我担心我的objc-fu不是那么强大.我也对上面引用的最后一行感到困惑.我一直在谷歌搜索关于这一点,我发现似乎是一篇体面的文章谈论观察/通知技术的各种方法:http:
//cocoawithlove.com/2008/06/five-approaches-to -listening-observing.html
方法#5甚至表示委托作为一种方法!除了....对象一次只能设置一个委托.所以当我有多个viewcontroller通信时,我该怎么办?
好的,那是设置团伙.我知道我可以通过引用在我的appdelegate中的多个viewcontroller实例轻松地在app委托中执行我的通信方法,但我想以正确的方式做这种事情.
请回答以下问题,帮助我"做正确的事":
iphone cocoa-touch delegates objective-c key-value-observing
Interface Builder可用于Cocoa应用程序中的基本依赖项注入,但是当您不想在NIB文件中实例化对象时,是否有人知道Objective-C/Cocoa的更完整的依赖项注入框架?
编辑
为了澄清,我认识到IB可以用于基本的DI,但我正在寻找一个具有更完整功能的框架,包括单独的生产和测试配置,以及Groovy或Springs.
我只需要在某处阅读以下代码:
public class SingletonObjectDemo {
private static SingletonObjectDemo singletonObject;
// Note that the constructor is private
private SingletonObjectDemo() {
// Optional Code
}
public static SingletonObjectDemo getSingletonObject() {
if (singletonObject == null) {
singletonObject = new SingletonObjectDemo();
}
return singletonObject;
}
}
Run Code Online (Sandbox Code Playgroud)
我需要知道这部分需要什么:
if (singletonObject == null) {
singletonObject = new SingletonObjectDemo();
}
Run Code Online (Sandbox Code Playgroud)
如果我们不使用这部分代码怎么办?仍然会有一个副本SingletonObjectDemo,为什么我们需要这个代码呢?
objective-c ×2
cocoa ×1
cocoa-touch ×1
delegates ×1
iphone ×1
java ×1
lazy-loading ×1
singleton ×1
static ×1