目录:[Swift]Xcode实际操作

本文将演示使用RunLoop使PerformSelector方法延迟动作的执行。

在项目导航区,打开视图控制器的代码文件【ViewController.swift】

 1 import UIKit
 2
 3 class ViewController: UIViewController {
 4
 5     //添加一个布尔属性,用来标识加载状态
 6     var stillLoading = true
 7
 8     override func viewDidLoad() {
 9         super.viewDidLoad()
10         // Do any additional setup after loading the view, typically from a nib.
11
12         //创建一个位置在(100,100),尺寸为(100,30)的显示区域。
13         let rect = CGRect(x: 100, y: 100, width: 100, height: 30)
14         //初始化一个标签对象,设置标签对象的位置和尺寸信息
15         let label = UILabel(frame: rect)
16         //设置标签对象的显示内容
17         label.text = "Waiting"
18         //给标签对象设置标识值,一边将来通过标识值,来调用标签对象。
19         label.tag = 1
20         //将标签对象,添加到当前视图控制器的根视图
21         self.view.addSubview(label)
22
23         //执行一个方法,并设置延迟执行为0秒,即立即执行该方法
24         self.perform(#selector(ViewController.threadEvent), with: nil, afterDelay: 0.0)
25     }
26
27     //添加一个方法,用来响应定时事件
28     @objc func threadEvent()
29     {
30         //执行一个方法,并设置延迟执行为2秒,即等待2秒后,执行该方法
31         self.perform(#selector(ViewController.workInBackground), with: nil, afterDelay: 2.0)
32
33         //添加一条while语句,这条语句将使方法一直处于执行状态,
34         while stillLoading
35         {
36             //直到布尔变量值为假,才会跳出当前循环,以此实现线程等待阻塞
37             RunLoop.current.run(mode:.default, before: Date.distantFuture)
38         }
39
40         //当程序跳出当前的循环语句时,隐藏标签对象
41         self.view.viewWithTag(1)?.isHidden = true
42     }
43
44     //添加一个方法,用来响应定时事件
45     @objc func workInBackground()
46     {
47         //将变量的值设为否,以清除线程的阻塞
48         print(">>>>>>>>>>>>>>>>>>>")
49         stillLoading = false
50     }
51
52     override func didReceiveMemoryWarning() {
53         super.didReceiveMemoryWarning()
54         // Dispose of any resources that can be recreated.
55     }
56 }

转载于:https://www.cnblogs.com/strengthen/p/10069012.html

[Xcode 实际操作]八、网络与多线程-(19)使用RunLoop使PerformSelector方法延迟动作的执行...相关推荐

  1. [Xcode 实际操作]八、网络与多线程-(17)使用网址会话对象URLSession向远程服务器上传图片...

    目录:[Swift]Xcode实际操作 本文将演示如何通过网址会话对象URLSession向远程服务器上传图片. 网址会话对象URLSession具有在后台上传和下载.暂停和恢复网络操作.丰富的代理模 ...

  2. [Xcode 实际操作]八、网络与多线程-(25)实现ShareSdk的社会化分享功能

    目录:[Swift]Xcode实际操作 完成开发包的安装和配置之后,本文将演示社会化分享功能的具体开发步骤. 在项目导航区,打开并编辑程序代理文件[AppDelegate.swift] 1 impor ...

  3. iOS开发网络篇—多线程断点下载

    iOS开发网络篇-多线程断点下载 说明:本文介绍多线程断点下载.项目中使用了苹果自带的类,实现了同时开启多条线程下载一个较大的文件.因为实现过程较为复杂,所以下面贴出完整的代码. 实现思路:下载开始, ...

  4. [Xcode 实际操作]四、常用控件-(15)MKMapView加载简单视图

    目录:[Swift]Xcode实际操作 本文将演示地图视图的使用方法. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] 1 import UIKit 2 //首先往 ...

  5. [Xcode 实际操作]二、视图与手势-(12)UITapGestureRecognizer手势之双击

    目录:[Swift]Xcode实际操作 本文将演示使用视图的双击手势,完成视图的交互功能. 1 import UIKit 2 3 class ViewController: UIViewControl ...

  6. [Xcode 实际操作]七、文件与数据-(2)创建文件夹

    目录:[Swift]Xcode实际操作 本文将演示如何创建文件夹. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] 1 import UIKit 2 3 class ...

  7. [Xcode 实际操作]六、媒体与动画-(3)使用CoreImage框架设置图片的单色效果

    目录:[Swift]Xcode实际操作 本文将演示如何使用图片框架,将图片转换成单色样式. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] 1 import UIK ...

  8. [Xcode 实际操作]六、媒体与动画-(1)使用图形上下文按一定比例缩放图片

    目录:[Swift]Xcode实际操作 本文将演示如何通过图形上下文,来实现图片缩放的功能. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] 1 import UI ...

  9. [Xcode 实际操作]七、文件与数据-(3)创建文本文件、属性列表文件、图片文件

    目录:[Swift]Xcode实际操作 本文将演示如何创建各种类型的文件. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] 1 import UIKit 2 3 c ...

最新文章

  1. 【Android Gradle 插件】ProductFlavor 配置 ( ProductFlavor#vectorDrawables 配置 )
  2. OS_CORE.C(3)
  3. java书籍_学习Java最好的10本书,从入门到精通
  4. LeetCode_97.交错字符串_没懂
  5. android studio异步单元测试,在Android Studio中可以进行单元测试
  6. 大道至简—GO语言最佳实践
  7. java listen_Java进阶-IO基础
  8. 终于有人把内卷和囚徒困境讲明白了
  9. Android笔记 动画之tween(补间)动画demo
  10. 理解 Android 消息机制
  11. java面试要点005---git和svn的区别
  12. But how to do it? How to avoid direct competition with giants?
  13. 泊松分布的理解与Python仿真
  14. lisp画表盘刻度线_Lisp-Stat翻译 —— 第九章 统计绘图窗体
  15. CF1040D Subway Pursuit
  16. cisco2811 路由器修改密码
  17. linux 设置用户只读,Linux只读账号配置
  18. unity制作小地图
  19. c语言打开文件报错 13,求帮忙看一段打开文件的代码~~真心无力了
  20. httpd配置三种虚拟主机带访问控制

热门文章

  1. lucene创建索引
  2. rsync 相关参数
  3. SpringMVC中使用Interceptor拦截器
  4. MyEclipse中导入java文件出现乱码问题的解决方法
  5. Sqlite 扩展功能 GET_PHONEBOOK_INDEX
  6. windows 2008初体验常见问题: 无线网络没有正确配置为使用IP协议 错误解决办法...
  7. we need to have frequent contact for relationships for transferring from aca to career
  8. 三个免费图片网站:特别适合场景图
  9. Unity 中使用Async-Await替代 coroutines
  10. UNIYT关于V S2017,VS2019断点调试卡住的问题