关于Xcode正确运行swift多线程
想跳过废话直接看解决方案的可以点击这里直接跳转,我这人写博客喜欢瞎逼逼。
还有一些我看过的不错的多线程资料,在此给出链接,点击这里直接跳转查看。
近来为了做操作系统课程设计,不得不去学习了下多线程。
毕坤老师说随便你们用什么语言,C,C++,C#,Java,甚至PHP或者iOS都可以。
好吧,正好自己在自学iOS开发,那就用swift语言好了。
然后,蛋疼的事情就开始啦!!
swift是门新语言,它的语法一直在更新,最明显的就是直接取消了println。
学习swift以来,我也遇到过很多因为语法过期而导致的问题。
而也正是因为swift是门新语言,网上对swift多线程讲解的内容并不是很多。
当我建立了一个command line项目想单纯写一个command line程序的时候,发现。
咦,为什么异步多线程始终无法输出结果。
只要是开辟了一个异步多线程,那就肯定是什么内容都输出不了了。
我和室友研究了好几天,最终发现,在异步多线程下面写一行print函数,这样多线程里面的print函数就能有效。
但是!输出结果还是很诡异,比如有十个输出结果,但是只能输出一两个。和网上的教程案例里面的输出完全不一样啊擦!
我甚至认为,是不是swift语法又更新了,导致网上的多线程教程完全失效了?
于是,所有的swift多线程学习陷入了僵局,一晃又是一星期。
五一的时候在家没事干,突然灵光一现,会不会是因为我项目建错了?
可能不是建立command line,而是应该建立cocoa application?
然后一试,果然!多线程运行成功!
下面是解决方案脑残教程:
首先建立一个cocoa application项目,我选择的是OS X下的cocoa application,这样一会就不用开启模拟器了。
如下图:
点击next,项目名称为test,项目语言选择swift,如下图:
然后next,最后create完成项目创建。接着找到左边的文件导航栏,找到里面的ViewController.swift文件,如下图:
在super.viewDidLoad()下面输入多线程代码:
//多线程
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, )) {
for i in ... {
print("============FirstTask:\(i)")
sleep()
}
}
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, )) {
for i in ... {
print("SecondTask:\(i)")
sleep()
}
}
print("任务结束")
如下图:
运行一把试试,是不是能正确进行多线程运算了?
关于Xcode正确运行swift多线程的更多相关文章
- swift多线程定时器
swift多线程定时器的使用 func countDown(_ timeOut:Int,view: UIView){ var timeout = timeOut let queue:DispatchQ ...
- Send Push Notifications to iOS Devices using Xcode 8 and Swift 3, APNs Auth Key
Send Push Notifications to iOS Devices using Xcode 8 and Swift 3 OCT 6, 2016 Push notifications are ...
- 解决cocos2dx在Xcode中运行时报:convert: iCCP: known incorrect sRGB profile 的问题
解决cocos2dx在Xcode中运行时报:convert: iCCP: known incorrect sRGB profile 的问题 本文的实践来源是参照了两个帖子完成的: http://dis ...
- 伪分布式环境下命令行正确运行hadoop示例wordcount
首先确保hadoop已经正确安装.配置以及运行. 1. 首先将wordcount源代码从hadoop目录中拷贝出来. [root@cluster2 logs]# cp /usr/local/h ...
- ASP.NET 4.5 尚未在 Web 服务器上注册。您需要手动将 Web 服务器配置为使用 ASP.NET 4.5,这样您的网站才能正确运行。
系统换成Windows10安装VS2012打开项目总提示:vs2012 aps.NET 4.5尚未在web服务器上注册,您需要手动将Web服务器配置为使用ASP.Net 4.5,这样您的网站才可能正确 ...
- 解析ThreadPoolExecutor类是如何保证线程池正确运行的
摘要:对于线程池的核心类ThreadPoolExecutor来说,有哪些重要的属性和内部类为线程池的正确运行提供重要的保障呢? 本文分享自华为云社区<[高并发]通过源码深度解析ThreadPoo ...
- 【高并发】通过源码深度解析ThreadPoolExecutor类是如何保证线程池正确运行的
大家好,我是冰河~~ 对于线程池的核心类ThreadPoolExecutor来说,有哪些重要的属性和内部类为线程池的正确运行提供重要的保障呢? ThreadPoolExecutor类中的重要属性 在T ...
- swift 多线程及GCD
1.基本概念 1)进程: 进程是指在系统中正在运行的一个应用程序.每个进程之间是独立的,每个进程运行在其专用且受保护的内存空间里.某进程内的线程在其它进程不可见 2)线程: 1个进程要执行任务,必须有 ...
- Swift - 多线程实现方式(3) - Grand Central Dispatch(GCD)
1,Swift继续使用Object-C原有的一套线程,包括三种多线程编程技术: (1)NSThread (2)Cocoa NSOperation(NSOperation和NSOperationQueu ...
随机推荐
- 【二分】Codeforces Round #435 (Div. 2) D. Mahmoud and Ehab and the binary string
题意:交互题:存在一个至少有一个0和一个1的长度为n的二进制串,你可以进行最多15次询问,每次给出一个长度为n的二进制串,系统返回你此串和原串的海明距离(两串不同的位数).最后要你找到任意一个0的位置 ...
- [AGC025D]Choosing Points
[AGC025D]Choosing Points 题目大意: 输⼊\(n(n\le300),d_1,d_2\),你要找到\(n^2\)个整点\((x,y)\)满⾜\(0\le x,y<2n\). ...
- java instanceof方法
基本用法 null instanceof Object 为false: null instanceof 任意类 为false:任意实例 instanceof 对应的类或者父类 都为true: 基本 ...
- UNIX域套接字连接mysql
用户可以在配置文件中指定套接字文件的路径,如--socket=/data/mysql/mysql.sock [root@localhost ~]# mysql -uroot -p123456 -S / ...
- foreach循环时动态往数组里添加数据
今天在用TP做项目的时候遇到一个问题,foreach的时候需要动态往数组里添加数据,示例代码如下: $arr = array( array('id'=>'字符串1','name'=>'字符 ...
- 微软工具ILMerge
释义 ILMerge是一个可用于将多个.NET程序集合并为单个程序集的实用程序. ILMerge接收一组输入程序集并将它们合并到一个目标程序集中.输入程序集列表中的第一个程序集是主程序集. 当主组件是 ...
- 【spring cloud】spring cloud打包最外层项目报错:'packaging' with value 'jar' is invalid. Aggregator projects require 'pom' as packaging. @ line 9, column 13
OK,spring cloud项目,最外层的父级项目在打包的时候,报错如下: "C:\Program Files\Java\jdk1.8.0_131\bin\java" -Dmav ...
- Jenkins环境初步配置
为研究在kubernetes上的CICD,先在物理环境下安装个JenKins热热身. 安装Jenkins 在官网https://jenkins.io/下载war包,我的是http://mirrors. ...
- hosts文件配置及主要作用
hosts文件位于" C:\Windows\System32\drivers\etc "目录下,用于转换名字与IP地址的转换. 在浏览器中通过域名访问网站,首先查看hosts文件中 ...
- Cocos2d-x3.0游戏实例之《别救我》第七篇——物理世界的碰撞检測
事实上我也非常吃惊-居然写到第七篇了,我估计也就是四篇的内容,感觉非常奇妙,我也不会非常唠叨什么吖); // 0001 ); // 0001 ); // 0001 这样我们才干监听到它们的碰 ...