[Xcode 实际操作]八、网络与多线程-(19)使用RunLoop使PerformSelector方法延迟动作的执行...
目录:[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方法延迟动作的执行...相关推荐
- [Xcode 实际操作]八、网络与多线程-(17)使用网址会话对象URLSession向远程服务器上传图片...
目录:[Swift]Xcode实际操作 本文将演示如何通过网址会话对象URLSession向远程服务器上传图片. 网址会话对象URLSession具有在后台上传和下载.暂停和恢复网络操作.丰富的代理模 ...
- [Xcode 实际操作]八、网络与多线程-(25)实现ShareSdk的社会化分享功能
目录:[Swift]Xcode实际操作 完成开发包的安装和配置之后,本文将演示社会化分享功能的具体开发步骤. 在项目导航区,打开并编辑程序代理文件[AppDelegate.swift] 1 impor ...
- iOS开发网络篇—多线程断点下载
iOS开发网络篇-多线程断点下载 说明:本文介绍多线程断点下载.项目中使用了苹果自带的类,实现了同时开启多条线程下载一个较大的文件.因为实现过程较为复杂,所以下面贴出完整的代码. 实现思路:下载开始, ...
- [Xcode 实际操作]四、常用控件-(15)MKMapView加载简单视图
目录:[Swift]Xcode实际操作 本文将演示地图视图的使用方法. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] 1 import UIKit 2 //首先往 ...
- [Xcode 实际操作]二、视图与手势-(12)UITapGestureRecognizer手势之双击
目录:[Swift]Xcode实际操作 本文将演示使用视图的双击手势,完成视图的交互功能. 1 import UIKit 2 3 class ViewController: UIViewControl ...
- [Xcode 实际操作]七、文件与数据-(2)创建文件夹
目录:[Swift]Xcode实际操作 本文将演示如何创建文件夹. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] 1 import UIKit 2 3 class ...
- [Xcode 实际操作]六、媒体与动画-(3)使用CoreImage框架设置图片的单色效果
目录:[Swift]Xcode实际操作 本文将演示如何使用图片框架,将图片转换成单色样式. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] 1 import UIK ...
- [Xcode 实际操作]六、媒体与动画-(1)使用图形上下文按一定比例缩放图片
目录:[Swift]Xcode实际操作 本文将演示如何通过图形上下文,来实现图片缩放的功能. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] 1 import UI ...
- [Xcode 实际操作]七、文件与数据-(3)创建文本文件、属性列表文件、图片文件
目录:[Swift]Xcode实际操作 本文将演示如何创建各种类型的文件. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] 1 import UIKit 2 3 c ...
最新文章
- 【Android Gradle 插件】ProductFlavor 配置 ( ProductFlavor#vectorDrawables 配置 )
- OS_CORE.C(3)
- java书籍_学习Java最好的10本书,从入门到精通
- LeetCode_97.交错字符串_没懂
- android studio异步单元测试,在Android Studio中可以进行单元测试
- 大道至简—GO语言最佳实践
- java listen_Java进阶-IO基础
- 终于有人把内卷和囚徒困境讲明白了
- Android笔记 动画之tween(补间)动画demo
- 理解 Android 消息机制
- java面试要点005---git和svn的区别
- But how to do it? How to avoid direct competition with giants?
- 泊松分布的理解与Python仿真
- lisp画表盘刻度线_Lisp-Stat翻译 —— 第九章 统计绘图窗体
- CF1040D Subway Pursuit
- cisco2811 路由器修改密码
- linux 设置用户只读,Linux只读账号配置
- unity制作小地图
- c语言打开文件报错 13,求帮忙看一段打开文件的代码~~真心无力了
- httpd配置三种虚拟主机带访问控制
热门文章
- lucene创建索引
- rsync 相关参数
- SpringMVC中使用Interceptor拦截器
- MyEclipse中导入java文件出现乱码问题的解决方法
- Sqlite 扩展功能 GET_PHONEBOOK_INDEX
- windows 2008初体验常见问题: 无线网络没有正确配置为使用IP协议 错误解决办法...
- we need to have frequent contact for relationships for transferring from aca to career
- 三个免费图片网站:特别适合场景图
- Unity 中使用Async-Await替代 coroutines
- UNIYT关于V S2017,VS2019断点调试卡住的问题