相关疑难解决方法(0)

视图控制器之间通信的最佳方式是什么?

作为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委托中执行我的通信方法,但我想以正确的方式做这种事情.

请回答以下问题,帮助我"做正确的事":

  1. 当我试图在UINavigationController堆栈上推送一个新的viewcontroller时,应该这样做. 我的代码中哪个类/文件是正确的位置?
  2. 当我想在一个UIViewControllers中影响某个数据片段(iVar的值)时,当我在另一个 UIViewController中时,这样做的"正确"方法是什么?
  3. 假设我们在一个对象中一次只能设置一个委托,当讲师说"为观察者定义一个通用接口(如委托)"时,实现会是什么样子.如果可能的话,伪代码示例在这里会非常有用.

iphone cocoa-touch delegates objective-c key-value-observing

164
推荐指数
2
解决办法
4万
查看次数

Cocoa的依赖注入框架?

Interface Builder可用于Cocoa应用程序中的基本依赖项注入,但是当您不想在NIB文件中实例化对象时,是否有人知道Objective-C/Cocoa的更完整的依赖项注入框架?

编辑

为了澄清,我认识到IB可以用于基本的DI,但我正在寻找一个具有更完整功能的框架,包括单独的生产和测试配置,以及Groovy或Springs.

cocoa dependency-injection objective-c

52
推荐指数
4
解决办法
2万
查看次数

在java中的单身人士

我只需要在某处阅读以下代码:

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,为什么我们需要这个代码呢?

java singleton static lazy-loading

5
推荐指数
2
解决办法
2664
查看次数