想跳过废话直接看解决方案的可以点击这里直接跳转,我这人写博客喜欢瞎逼逼。

还有一些我看过的不错的多线程资料,在此给出链接,点击这里直接跳转查看

近来为了做操作系统课程设计,不得不去学习了下多线程。

毕坤老师说随便你们用什么语言,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多线程的更多相关文章

  1. swift多线程定时器

    swift多线程定时器的使用 func countDown(_ timeOut:Int,view: UIView){ var timeout = timeOut let queue:DispatchQ ...

  2. 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 ...

  3. 解决cocos2dx在Xcode中运行时报:convert: iCCP: known incorrect sRGB profile 的问题

    解决cocos2dx在Xcode中运行时报:convert: iCCP: known incorrect sRGB profile 的问题 本文的实践来源是参照了两个帖子完成的: http://dis ...

  4. 伪分布式环境下命令行正确运行hadoop示例wordcount

    首先确保hadoop已经正确安装.配置以及运行. 1.     首先将wordcount源代码从hadoop目录中拷贝出来. [root@cluster2 logs]# cp /usr/local/h ...

  5. ASP.NET 4.5 尚未在 Web 服务器上注册。您需要手动将 Web 服务器配置为使用 ASP.NET 4.5,这样您的网站才能正确运行。

    系统换成Windows10安装VS2012打开项目总提示:vs2012 aps.NET 4.5尚未在web服务器上注册,您需要手动将Web服务器配置为使用ASP.Net 4.5,这样您的网站才可能正确 ...

  6. 解析ThreadPoolExecutor类是如何保证线程池正确运行的

    摘要:对于线程池的核心类ThreadPoolExecutor来说,有哪些重要的属性和内部类为线程池的正确运行提供重要的保障呢? 本文分享自华为云社区<[高并发]通过源码深度解析ThreadPoo ...

  7. 【高并发】通过源码深度解析ThreadPoolExecutor类是如何保证线程池正确运行的

    大家好,我是冰河~~ 对于线程池的核心类ThreadPoolExecutor来说,有哪些重要的属性和内部类为线程池的正确运行提供重要的保障呢? ThreadPoolExecutor类中的重要属性 在T ...

  8. swift 多线程及GCD

    1.基本概念 1)进程: 进程是指在系统中正在运行的一个应用程序.每个进程之间是独立的,每个进程运行在其专用且受保护的内存空间里.某进程内的线程在其它进程不可见 2)线程: 1个进程要执行任务,必须有 ...

  9. Swift - 多线程实现方式(3) - Grand Central Dispatch(GCD)

    1,Swift继续使用Object-C原有的一套线程,包括三种多线程编程技术: (1)NSThread (2)Cocoa NSOperation(NSOperation和NSOperationQueu ...

随机推荐

  1. 【推导】【构造】Petrozavodsk Summer Training Camp 2015 Day 2: Xudyh (TooSimple) Contest, Saturday, August 22, 2015 Problem G. Travelling Salesman Problem

    一个矩阵,每个位置有一个非负整数,一个人从左上走到右下,不能走重复的格子,问得到的最大权值. 当长宽不都为偶数时,必然能走遍所有格子,横着从左到右,从右到左(或是竖着走)走完即可. 当长宽都是偶数时, ...

  2. 【map】【分解质因数】CDOJ1572 Espec1al Triple

    先把公比为1,即前项 中项 末项相同的统计出来.对每一类数C(n,3)即可. 然后我们发现,因为a1*a3=(a2)^2,所以a1和a3进行质因子分解之后,每一个质因子的指数的奇偶性必然相同,否则无法 ...

  3. 通过LoadBalancerClient获取所有服务列表的IP

    说明:LoadBalanced采用轮训的方式请求服务提供者,但是如果针对某些业务需要精确到某个服务提供者或者遍历所有的服务提供者,那么可以通过LoadBalancerClient去获得. 参考: ht ...

  4. VirtualBox的网络配置,Host Only+NAT方式

    其实网络这类相关的文章很多,我只是想结合自己的实际情况,把我的经验写下来,给那些需要的人们吧. 主机:windows xp 虚拟机:ubuntu 10.10 Virtualbox:4.0.2 虚拟机在 ...

  5. Java的Executor框架和线程池实现原理(转)

    ExecutorService接口继承自Executor接口,定义了终止.提交,执行任务.跟踪任务返回结果等方法 1,execute(Runnable command):履行Ruannable类型的任 ...

  6. THttpClientSocket token验证

    THttpClientSocket uses SynCrtSock非WINHTTP.DLL里面的控件,可以用于手机端. function Client(const SQL: RawUTF8): Raw ...

  7. #!/usr/bin/env在脚本中的作用

    在linux的一些脚本,需在开头一行指定脚本的解释程序,如: #!/usr/bin/env bash #!/usr/bin/bash #!/usr/bin/env python  告诉操作系统执行这个 ...

  8. [Java]在窗口界面上画出硬盘中图片文件

    利用类javax.swing.JPanel来在窗口界面上画图.图片文件通过javax.imageio.ImageIO类来获取. import java.awt.Graphics; import jav ...

  9. java常用命令行

    1.javac(编译java源文件) javac是用来编译.java文件的. 例子: package com.fjassa.domain;  public class Human.public cla ...

  10. 流畅的python第八章对象引用,可变性和垃圾回收

    变量不是盒子 在==和is之间选择 ==比较两个对象的值,而is比较对象的标识 元组的相对不可变姓 元组与多数的python集合(列表,字典,集,等等)一样,保存的是对象的引用.如果引用的元素是可变的 ...