线程

同步和异步

如果是同步操作,它会阻塞当前线程并等待Block中的任务执行完毕,然后当前线程才会继续往下运行。并行队列中的任务根据同步或异步有不同的执行方式。同步执行异步执行串行队列当前线程,一个一个执行其他线程,一个一个执行并行队列当前线程,一个一个执行开很多线程,一起执行创建队列:主队列:这是一个特殊的串行队列。传入disPATCH_QUEUE_CONCURRENT表示创建并行队列。

Realm Swift

一旦带有主键的对象被添加到Realm之后,该对象的主键将不可修改。IgnoredProperties重写Object.ignoredProperties()可以防止Realm存储数据模型的某个属性。Realm将不会干涉这些属性的常规操作,它们将由成员变量提供支持,并且您能够轻易重写它们的setter和getter。所有的查询在Realm中都是延迟加载的,只有当属性被访问时,才能够读取相应的数据。

Swift - 多线程实现方式3 - Grand Central DispatchGCD

dispatchqueue可以是并发的或串行的。dispatch_suspend后,追加到DispatchQueue中尚未执行的任务在此之后停止执行。6//创建并行队列conQueue:dispatch_queue_t=dispatch_queue_create//暂停一个队列dispatch_suspend//继续队列dispatch_resume6,dispatch_once一次执行保证dispatch_once中的代码块在应用程序里面只执行一次,无论是不是多线程。注意,我们不能(直接)取消我们已经提

swift__多线程GCD详解

有以下*-disPATCH_QUEUE_PRIORITY_HIGH:*-disPATCH_QUEUE_PRIORITY_DEFAULT:多用默认*-disPATCH_QUEUE_PRIORITY_LOW:*-disPATCH_QUEUE_PRIORITY_BACKGROUND:*第二个参数为预留参数,一般为0*/letmyQueue:dispatch_queue_t=dispatch_get_global_queue//用异步的方式运行队列里的任务dispatch_async//-------------

swift开发笔记19 在网络请求结束后更新UI

更新UI是必须回到主线程的,如果你是在网络请求的子线程中做操作,然后想更新UI的操作,那么需要把更新操作加入主队列,主队列的任务都是在主线程中执行的,这时需要用到GCD技术。

【荐】Grand Central Dispatch Tutorial for Swift: Part 1/2

所有的dispatchqueues自身都是线程安全的。dispatch_sync把任务添加到对应队列并等待其完成后再继续执行当前任务,容易造成死锁,或阻塞当前任务。dispatch_after指定时间后把任务添加到队列中。效果就像是延时后的dispatch_async。而array和dictionary在swift中是以struct的形式实现的,所以以上的读操作返回的是一个副本。在GCD中使用dispatchbarrier来解决这个问题。dispatchbarrier是一组方法,它们都已顺序化的方式来结合

NSOperation 和NSOperationQueue使用

NSOperation和NSOperationQueue是更高层的类,使用它们操作多线程会更加简单。NSOperationvs.GrandCentraldispatch你可能听说过GCD。这篇教程会使用NSOperation是因为你需要关心tableview的表现以及电量消耗,在用户滚动屏幕时,你要能够取消那些已经划出屏幕的图片的任务。默认情况下,Xcode只会在Swift文件中importFoundation。默认情况下,NSOperationQueue会在后台做一些运算以决定什么设置是最适合当前平台的

转 Grand Central Dispatch 基础教程:Part 1/2 -swift

第一节将解释什么是GCD并了解几个GCD的基础函数。GettingStartedGCD是libdispatch的代名词,libdispatch代表着运行iOS与OSX的多核设备上执行并行代码的官方代码库。再有一点要记住的就是在任何GCD文档中涉及到Objective-C的块代码都是可以用Swift的闭包来替换的。举个具有线性安全性的代码示例leta=["thread-safe"]。因为,这一切都是由GCD控制的。任务的开始执行的时间完全由GCD决定。它也是唯一一个用作向UIView对象发送信息或推送监听。