• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

关于Xcode正确运行swift多线程

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

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

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

毕坤老师说随便你们用什么语言,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, 0)) {
    for i in 1...10 {
        print("============FirstTask:\(i)")
        sleep(1)
    }
}
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {
    for i in 1...10 {
        print("SecondTask:\(i)")
        sleep(1)
    }
}
print("任务结束")

如下图:

运行一把试试,是不是能正确进行多线程运算了?????

输出结果:

任务结束
============FirstTask:1
SecondTask:1
SecondTask:2
============FirstTask:2
============FirstTask:3
SecondTask:3
SecondTask:4
============FirstTask:4
SecondTask:5
============FirstTask:5
SecondTask:6
============FirstTask:6
SecondTask:7
============FirstTask:7
============FirstTask:8
SecondTask:8
============FirstTask:9
SecondTask:9
============FirstTask:10
SecondTask:10

 

下面是一些swift多线程参考资料,直接给出链接。

 关于iOS多线程,你看我就够了-伯恩的遗产,这里面总结了各种swift多线程的解决方案,比较全面

swift下的GCD详解-CallMeHwc,这里面是一个关于swift GCD多线程方案的一个专题,值得一看。话说我的解决方案灵感就是来自于此。

 

嗯,教程就这些,结束。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Swift语言快速入门发布时间:2022-07-13
下一篇:
[Swift]LeetCode351.安卓解锁模式$AndroidUnlockPatterns发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap