【问题标题】:sequential methods execution obj-c顺序方法执行 obj-c
【发布时间】:2012-10-30 16:30:15
【问题描述】:

非常初学者的 obj-c 问题。

我的任务是在视图加载时执行简单的序列:

  • 暂停 2 秒
  • 方法 1 执行
  • 暂停 2 秒
  • 方法2执行
  • 暂停 2 秒
  • 方法3执行

我为 iOS5+ 编写此代码,以便可以使用块或其他功能。我试过了

[NSThread sleepForTimeInterval:x];

在方法执行之间进行暂停,但是三个暂停加到一个暂停,我有一个大暂停,所以这是错误的部分。 如何以正确的方式做到这一点?

【问题讨论】:

    标签: objective-c ios xcode methods


    【解决方案1】:

    我会链接方法:

    • 调用 1. 方法并使其调用 2.
      1. 方法应该调用 3。
      1. 应继续执行 4。 ...

    【讨论】:

    • 有点脆弱,如果他需要将它们用于其他用途并且它们不相互依赖。
    • 他可以拥有一个包含逻辑的属性'nextMethod'。
    • 很公平,但是你必须有一些状态来跟踪你在哪个状态。那么当他自己发起这个,然后在这些计时器触发时用户以某种方式发起它时会发生什么?然后你会遇到这样一种情况,你的计数器计算你使用哪种方法的次数增加了太多次并且你不同步,所以你需要一个队列来保存对这一系列方法的所有调用,直到每个 3-方法链已经完成等等等等等等。在一天结束的时候,虽然我们不知道这些方法是做什么的,所以这都是猜测,所以我会留下它
    【解决方案2】:

    你可以使用 performSelector:withObject:afterDelay:,或者像 CodaFi 所说的,一个 NSTimer。任何一种方法都允许将对象传递给方法,如果需要传递多个参数,该对象可以是数组或字典。

    【讨论】:

      【解决方案3】:

      让 NSThread 休眠绝不是处理定时方法执行的正确方法。您想要NSTimer,您可以将其设置为在两秒后触发相同的方法(然后让该方法确定接下来要执行哪个选择器),或者将三个计时器设置为在两秒后触发,每个计时器调用不同的方法.

      【讨论】:

        最近更新 更多