【问题标题】:Recursive Delegation in iOS—How to Implement?iOS 中的递归委托——如何实现?
【发布时间】:2011-05-27 01:03:01
【问题描述】:

我的 ViewController 有一个 DataController,它处理从 Internet 加载的数据。我将 DataController 设置为 ViewController 的数据源,它工作正常。但是现在我想在数据加载时显示一个进度条,所以我想让 ViewController 成为 DataController 的代表,并在加载开始、继续和结束时收到通知。显然,当堆栈仍在向我显示汇编时,这种递归委托会导致访问错误。这种情况应该如何实现?

【问题讨论】:

    标签: ios delegates datasource


    【解决方案1】:

    我从未使用过您提到的这种确切的 dataController 模式,但我对这些方面的常见实现是:

    1. 将 NSArray 或 NSMutableArray 声明为 UIViewController 子类的成员
    2. 创建一个使用 ASIHTTP 或 NSURL 从 Web 加载数据的类,并将该类设置为 ASIHTTP 或 NSURL 的委托
    3. 在您的 UIViewController 所遵循的数据访问类中创建一个协议
    4. 在您的 UIViewController 中创建该类的实例,并开始获取过程(异步)
    5. 当请求完成(或正在向您的数据访问类发出进度通知)时,通过委托将该信息发送到您的 UIViewController
    6. 当请求完全完成时,将项目列表返回到委托方法,并将该数据本地存储在步骤 1 中的数组中。

    根据你的情况,有多种方法可以做到这一点,但我只是想给你一个想法。

    【讨论】:

    • 我不太明白你在说什么——如何将它集成到我现有的架构中?
    • 我认为您需要粘贴一些代码才能为问题添加更多详细信息,因为我对您的 DataController 模式不太熟悉。我通常通过委托将 nsarray 或包含 nsarray 的对象绑定到 tableview。
    【解决方案2】:

    没关系;原来问题是由于过早发布。我正在处理永远不应该被释放的对象(数据源和根视图控制器),并且我在创建它们之后设置了委托,所以这里真的没有问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多