一个接一个地执行方法,执行之间有暂停

2023-12-11

新手 obj-c 问题。 我正在编写一个简单的 iPad 演示文稿,不适用于 Appstore。我的任务是实现几个相继执行的方法,并且它们之间几乎没有停顿。主要结构如下:

  • 查看负载
  • 暂停两秒,然后执行method1
  • 暂停两秒,然后执行method2
  • 暂停两秒,然后执行method3 ETC...

我从 -viewDidLoad 调用的第一个方法:

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(firstCountStarts) userInfo:nil repeats:NO];

这里一切正常,方法在视图加载后 2 秒启动。 从 method1 内部,我尝试以相同的方式调用方法 2,但它开始与 method1 同时执行。同样的方式触发了method3(从method2调用)并且它们之后的所有方法根本不执行。我尝试将所有这些方法放在 -ViewDidLoad 中并延迟调用它们:

 [self method1];
 [self performSelector:@selector(method2) withObject:nil afterDelay:2];
 [self performSelector:@selector(method3) withObject:nil afterDelay:4];
 etc...

但是method2调用之后的所有方法都没有执行。如果我正确理解线程中的问题。我需要使用GCD来执行不同队列中的方法吗?或者也许是其他方面的问题?

谢谢各位同事!


您可以将它们添加到 NSOperation 队列中...

NSOperationQueue *queue = [NSOperationQueue new];

queue.maxConcurrentOperationCount = 1;

[queue  addOperationWithBlock:^{
    [self method1];
}];

[queue  addOperationWithBlock:^{
    [NSThread sleepForTimeInterval:2.0];
    [self method2];
}];

[queue  addOperationWithBlock:^{
    [NSThread sleepForTimeInterval:2.0];
    [self method3];
}];

...

然后,只有在前一个任务完成后才会运行每个任务,并为您设置 2 秒的延迟。

不过,使用它来执行 UI 操作时要小心。这将在后台线程中运行,因此您可能需要处理它。

也许这可能会更好,你可以通过子类化 NSOperation 来做到这一点,但这需要大量工作,但没有多大好处。

从您想要的任何地方运行它,我建议将所有这些放入一个名为 setUpQueue 或其他函数的函数中。

然后从 viewWillAppear 或 viewDidLoad 或其他地方,按下按钮等...做...

[self setUpQueue];

您所要做的就是将内容添加到队列中,然后队列将自行管理。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一个接一个地执行方法,执行之间有暂停 的相关文章

  • 如何检测Retina高清显示屏?

    UIScreen有一个新的 nativeScaleiOS 8 中的属性 但文档没有提及它 property nonatomic readonly CGFloat nativeScale 还有一个scale属性 但文档说它是 2 用于视网膜显
  • 适用于 Objective-C / iPhone 的良好 HTTP 库? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 UPDATE 这个问题显然已经过时了 参见日期 我建议只使用现代 iOS7 功能 例如 NSURLSession 我想 这个问题是为了历史
  • 使用 Cocoa 获取无法安装的驱动器列表

    我想获取在 OS X 下使用 Cocoa Objective C 无法安装 弹出的驱动器列表 我希望 NSWorkspace getFileSystemInfoForPath 能帮助我 NSArray listOfMedia NSWorks
  • 如何请求用户开启定位服务

    我需要我的应用程序来访问用户的当前位置 它在应用程序开始时检查用户是否已设置 如果没有 我需要应用程序显示提示以使其使用位置服务 就像警报视图一样 点击按钮 它应该会带您进入 iPhone 上的位置服务屏幕 您可以通过以下代码检查 loca
  • 在后台任务中安排通知

    我正在为 iOS 开发一个日历 闹钟应用程序 它与网络服务器同步 当在服务器上添加活动时 会发出推送通知 以便 iOS 客户端可以获取新数据 并根据需要更新和安排下一次警报的时间 本地通知 但这仅在应用程序在客户端打开时才有效 我希望客户端
  • 您将如何实现一个检测水平滑动以允许分页的 UITableView?

    我想实现一个 UITableView 一次显示 20 行 但考虑到我实际上可能要展示 120 个项目 我想使用某种分页来处理这个问题 使用前 20 项填充表 当用户从右向左滑动时 用接下来的 20 个项目重新加载 UITableView 从
  • 在 Swift 中自动移动 UISlider

    我想在按下按钮时将 UISlider 从 minValue 循环移动到 maxValue 并在再次按下按钮时将其停止在当前位置 我想使用 Swift 我遇到的主要问题是函数 slider setValue 太快了 我希望动画更慢 IBAct
  • 线程 1:信号 SIGABRT - AppDelegate.h

    main m Journey Created by Julian Buscema on 2014 07 13 Copyright c 2014 Julian Buscema All rights reserved import
  • Objective C 如何将文本字段添加到导航栏中

    我正在尝试将文本字段添加到导航栏中 但它没有显示在模拟器中 我在 viewdidload 中按如下方式执行 UITextView textField UITextView alloc initWithFrame CGRectMake 0 0
  • Objective C UIImagePNGRepresentation内存问题(使用ARC)

    我有一个基于 ARC 的应用程序 它从 Web 服务加载大约 2 000 个相当大 1 4MB 的 Base64 编码图像 它将 Base64 解码后的字符串转换为 png图像文件并将其保存到磁盘 这一切都是在一个循环中完成的 我不应该有任
  • 应用程序传输安全已禁用,但仍然出现 SSL 握手错误

    我在通过 HTTPS SSL 连接到 API 时遇到问题 我已经使用下面的字典完全禁用了应用程序传输安全性 ATS 尽管 SSL 证书通过了 NSCURL 的所有测试
  • 使用 UIImageJPEGRepresentation 时,compressionQuality 应该是多少?

    我想对用户库中的照片应用滤镜 然后将其写回磁盘 我在用着UIImageJPEGRepresentation 该函数需要一个UIImage and a compressionQuality值介于 0 0 和 1 0 之间 因为我想保留原始质量
  • 重置转换后的 UIView 的原点会变得疯狂

    我使用 UIView transform 旋转 缩放 UIVIew 效果很好 然而 一旦我更改视图的框架原点 即使我没有执行任何进一步的 CGAffineTransforms 视图的内容也会开始 奇怪 地缩放 为什么会出现这种情况 我该如何
  • iPhone - 如何在矩形中间绘制文本

    有没有一种方法可以在矩形中间绘制文本 我可以找到各种对齐方式 但我尝试过的任何方法都不能将文本垂直居中在矩形中 有没有一种简单的方法可以做到这一点 或者有什么方法可以将矩形居中然后在其中绘制 我直接绘制到 CGContext 尝试使用 NS
  • iOS WKWebView.scrollView委托导致BAD_ACCESS

    我的 viewController 有一个 UIView 属性 其中包含一个 WKWebView 我将 WKWebView rollView 委托设置为我的 viewController 它是我的 UIView 子类的公共函数 并在我的 v
  • 如何处理 Xcode“嵌入应用程序扩展”构建阶段

    通过添加新目标创建 共享扩展 时 Xcode 在应用程序目标设置的应用程序 构建阶段 选项卡中添加名为 嵌入应用程序扩展 的构建阶段 可以删除此阶段 但如果您尝试通过按左上角的 来添加它 您会发现可用选项中未列出 嵌入应用程序扩展 为什么会
  • 使用 Storyboard 时获取 NSManagedObjectContext

    目标是获取当前的 NSManagedObjectContext 以便使用 Core Data 在 iOS 4 3 中 我将 UINavigationController 的委托设置为 AppDelegate 如下所示 在 AppDelega
  • Swift 中通过不同类调用委托方法

    我正在获取 JSON 菜单 一旦 JSON 返回 我想运行 menuReady 来更新表的内容在 SomeTableViewController 类中 但下面的代码似乎不起作用 AIM Run 菜单就绪 JSON 返回后更新内容 PROBL
  • 在 UIMenuItem 上设置accessibilityLabel

    我正在尝试设置accessibilityLabel of a UIMenuItem而且似乎没有效果 无论如何 VoiceOver 只是读取项目的标题 let foo UIMenuItem title foo action selector
  • ActionScript、NetStream.Play.Failed iOS AIR 移动设备

    我正在尝试以类似于 Tiberiu Ionu Stan http stackoverflow com questions 2036107 aac mp4 not working in actionscript 3s netstream 的方

随机推荐

  • 具有模板化构造函数以及复制和移动构造函数的类

    这个问题是这个问题的后续问题 模板类的模板构造函数的显式模板专业化另一个问题中给出的答案当然是正确的 但事实证明我并没有完全问我想问的问题 所以这是一个新问题 考虑以下代码 template
  • BufferedReader 相对于 Scanner 有什么好处

    这是关于图中深度优先搜索的代码 谁知道为什么在这段代码中使用 bufferedReader 类 为什么不使用 nextInt 函数来代替 它的特权是什么 是为了加快处理速度吗 谢谢 import java io BufferedReader
  • 为什么将二级子类化 Button 控件添加到 Grid 会产生 E_INVALIDARG?

    我在处理 C CX 中的 Windows UI Xaml Button 类的子类时遇到了这个问题 我想知道发生了什么 如果我将一个控件实例添加到网格中 一切都会按预期工作 如果我对控件进行子类化并添加一个实例subclass 一切都按预期进
  • 使用 sapply 进行中值插补

    我想替换数据框列中的缺失值 我写了下面的代码 MedianImpute lt function data data for i in 1 ncol data if class data i in c numeric integer if s
  • CGRectIntersectsRect [重复]

    这个问题在这里已经有答案了 可能的重复 CGRectIntersects矩形问题 我正在制作一个带有迷宫的应用程序 我在界面生成器中的迷宫内放置了一个球 我为其放置了一个出口 我有一个 TouchMoved void touchesMove
  • Dart 中的日期倒计时

    我正在尝试为我的特定日期创建一个倒计时 并显示在那之前还剩多少小时 分钟和秒 例如我想将计数器日期设置为 2018 年 10 月 25 日星期四上午 7 14 05 我想向用户显示 剩余时间 hh mm ss 直到 10 月 25 日 我试
  • 如何在Java中将itext pdf文件的段落设置为带背景色的矩形

    我正在使用 itext 库设计一个 pdf 报告 我已经在其中实现了一个段落 现在根据我的要求 我必须将此段落设置在具有背景颜色的矩形框中 但我无法做到这一点 这是我的 java 中的 Itext 代码 Font f new Font Fo
  • PHP 代码未在浏览器中呈现[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 我有一个文件 manage php 其中包含 php
  • 在服务器上执行java代码

    我正在开发一个 Web 应用程序 一种用于编写和编译代码的在线 IDE 编程语言和编译器都是在大学内部开发的 我的问题是 是否可以在服务器上执行编译器 编译器是用java编写的 以便它编译代码并返回要下载的编译文件 更简单的是 用户使用在线
  • Python 3 的事件循环实现?

    有谁知道可用于 Python 3 的事件循环库 或绑定 如果它只支持 UNIX 系统也没关系 但我更喜欢也支持 Windows 系统 ETA 我意识到编写一个事件循环系统并不是非常困难 然而 我不想重新发明轮子 这些天我们仍然鼓励不要这样做
  • 为什么图像压缩算法要按子块处理图像?

    例如 考虑 DFT 或 DCT 准确地说 通过子块变换的图像与整体变换的图像之间有什么区别 生成的文件大小是否较小 算法是否更高效 变换后的图像看起来有什么不同吗 谢谢 它们被设计为可以使用并行硬件来实现 每个块都是独立的 可以在不同的计算
  • Cygwin 显示 UTC 时间而不是本地时间

    今天我注意到我的 cygwin shell 显示了错误的时间 它实际上是 UTC 时间 而它应该是我的当地时间 一旦我取消设置 TZ 变量 它就会显示当地时间 以下是一些显示情况的命令 我运行的是 Windows 10 我的 Windows
  • 通过 Powershell 中的 Web 服务使用复杂对象?

    我一直在尝试通过 Powershell 使用供应商提供的 Web 服务系统 我正在运行 4 0 以下是我用来设置代理以使用该服务的代码 uri http somehost employer net 9999 AdministrationSe
  • 为什么一个进程共享同一个HT核心时,另一个进程的执行时间会更短

    我有一个带有 4 个 HT 核心 8 个逻辑 CPU 的 Intel CPU 并且构建了两个简单的进程 第一个 int main for int i 0 i lt 1000000 i for int j 0 j lt 100000 j 第二
  • 如何使用 React 路由器嵌套路由

    我有多个布局 应包含不同的屏幕 每个布局都有自己的页眉 页脚和类似页面应该共享的其他内容 这是我想出的代码
  • d3.js 使用极坐标绘制元素

    我是 d3 js 新手 不确定要使用哪个 d3 功能 我需要围绕原点 在圆圈中 同心放置一组元素 svg selectAll circle each function d3 select this attr cx r Math cos th
  • UCM Clearcase:一个项目与多个项目中的流层次结构

    我们有一个项目 即将向稳定的代码库添加一项新功能 除了缺陷修复之外 不会进行任何重大更改 该计划不是在一段时间内 可能一个月 单独开发新功能 进行中间构建和测试 当功能完成并且质量可以接受时 将新功能的代码合并到主分支中 问题是就 Clea
  • scanf 导致 C 中的无限循环

    我对 C 语言比较陌生 但我已经编程几年了 我正在为大学课程编写一个程序 我很困惑为什么下面的 scanf 函数没有被调用 导致无限循环 我尝试过将 scanf 放在函数之外 调用它两次 一次从内部 一次从外部 以及其他一些方式 我在网上读
  • BizTalk部署期间不需要通过控制台导入MIS时

    允许哪些 BizTalk 应用程序 编排 模式 映射更改不强制通过管理控制台导入 MSI 而只在 GAC 中安装 DLL 通过控制台强制导入以停止编排并终止实例 但在 GAC 中安装仅需要重新启动该应用程序的主机 因此 有时不停止生产环境中
  • 一个接一个地执行方法,执行之间有暂停

    新手 obj c 问题 我正在编写一个简单的 iPad 演示文稿 不适用于 Appstore 我的任务是实现几个相继执行的方法 并且它们之间几乎没有停顿 主要结构如下 查看负载 暂停两秒 然后执行method1 暂停两秒 然后执行metho