3atv精品不卡视频,97人人超碰国产精品最新,中文字幕av一区二区三区人妻少妇,久久久精品波多野结衣,日韩一区二区三区精品

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

iOS四种多线程(swift和oc)

發(fā)布時(shí)間:2024/4/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS四种多线程(swift和oc) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在這篇文章中,我將為你整理一下 iOS 開發(fā)中幾種多線程方案,以及其使用方法和注意事項(xiàng)。當(dāng)然也會(huì)給出幾種多線程的案例,在實(shí)際使用中感受它們的區(qū)別。還有一點(diǎn)需要說(shuō)明的是,這篇文章將會(huì)使用 Swift 和 Objective-c 兩種語(yǔ)言講解,雙語(yǔ)幼兒園。OK,let's begin!

概述

這篇文章中,我不會(huì)說(shuō)多線程是什么、線程和進(jìn)程的區(qū)別、多線程有什么用,當(dāng)然我也不會(huì)說(shuō)什么是串行、什么是并行等問(wèn)題,這些我們應(yīng)該都知道的。

在 iOS 中其實(shí)目前有 4 套多線程方案,他們分別是:

  • Pthreads
  • NSThread
  • GCD
  • NSOperation & NSOperationQueue

所以接下來(lái),我會(huì)一一講解這些方案的使用方法和一些案例。在將這些內(nèi)容的時(shí)候,我也會(huì)順帶說(shuō)一些多線程周邊產(chǎn)品。比如: 線程同步延時(shí)執(zhí)行單例模式 等等。

Pthreads

其實(shí)這個(gè)方案不用說(shuō)的,只是拿來(lái)充個(gè)數(shù),為了讓大家了解一下就好了。百度百科里是這么說(shuō)的:

POSIX線程(POSIX threads),簡(jiǎn)稱Pthreads,是線程的POSIX標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)定義了創(chuàng)建和操縱線程的一整套API。在類Unix操作系統(tǒng)(Unix、Linux、Mac OS X等)中,都使用Pthreads作為操作系統(tǒng)的線程。

簡(jiǎn)單地說(shuō),這是一套在很多操作系統(tǒng)上都通用的多線程API,所以移植性很強(qiáng)(然并卵),當(dāng)然在 iOS 中也是可以的。不過(guò)這是基于 c語(yǔ)言 的框架,使用起來(lái)這酸爽!感受一下:

OBJECTIVE-C

當(dāng)然第一步要包含頭文件

#import <pthread.h>

然后創(chuàng)建線程,并執(zhí)行任務(wù)

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {pthread_t thread;//創(chuàng)建一個(gè)線程并自動(dòng)執(zhí)行 pthread_create(&thread, NULL, start, NULL); } void *start(void *data) { NSLog(@"%@", [NSThread currentThread]); return NULL; }

打印輸出:

2015-07-27 23:57:21.689 testThread[10616:2644653] <NSThread: 0x7fbb48d33690>{number = 2, name = (null)}

看代碼就會(huì)發(fā)現(xiàn)他需要 c語(yǔ)言函數(shù),這是比較蛋疼的,更蛋疼的是你需要手動(dòng)處理線程的各個(gè)狀態(tài)的轉(zhuǎn)換即管理生命周期,比如,這段代碼雖然創(chuàng)建了一個(gè)線程,但并沒(méi)有銷毀。

SWIFT

很遺憾,在我目前的 swift1.2 中無(wú)法執(zhí)行這套方法,原因是這個(gè)函數(shù)需要傳入一個(gè)函數(shù)指針 CFunctionPointer<T> 類型,但是目前 swift 無(wú)法將方法轉(zhuǎn)換成此類型。聽說(shuō) swift 2.0 引入一個(gè)新特性 @convention(c), 可以完成 Swift 方法轉(zhuǎn)換成 c 語(yǔ)言指針的。在這里可以看到

那么,Pthreads 方案的多線程我就介紹這么多,畢竟做 iOS 開發(fā)幾乎不可能用到。但是如果你感興趣的話,或者說(shuō)想要自己實(shí)現(xiàn)一套多線程方案,從底層開始定制,那么可以去搜一下相關(guān)資料。

NSThread

這套方案是經(jīng)過(guò)蘋果封裝后的,并且完全面向?qū)ο蟮摹K阅憧梢灾苯硬倏鼐€程對(duì)象,非常直觀和方便。但是,它的生命周期還是需要我們手動(dòng)管理,所以這套方案也是偶爾用用,比如 [NSThread currentThread],它可以獲取當(dāng)前線程類,你就可以知道當(dāng)前線程的各種屬性,用于調(diào)試十分方便。下面來(lái)看看它的一些用法。

創(chuàng)建并啟動(dòng)

  • 先創(chuàng)建線程類,再啟動(dòng)

    OBJECTIVE-C
    // 創(chuàng)建NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run:) object:nil]; // 啟動(dòng) [thread start];
    SWIFT
    //創(chuàng)建let thread = NSThread(target: self, selector: "run:", object: nil) //啟動(dòng) thread.start()
  • 創(chuàng)建并自動(dòng)啟動(dòng)

    OBJECTIVE-C
    [NSThread detachNewThreadSelector:@selector(run:) toTarget:self withObject:nil];
    SWIFT
    NSThread.detachNewThreadSelector("run:", toTarget: self, withObject: nil)
  • 使用 NSObject 的方法創(chuàng)建并自動(dòng)啟動(dòng)

    OBJECTIVE-C
    [self performSelectorInBackground:@selector(run:) withObject:nil];
    SWIFT

    很遺憾 too! 蘋果認(rèn)為 performSelector: 不安全,所以在 Swift 去掉了這個(gè)方法。

    Note: The performSelector: method and related selector-invoking methods are not imported in Swift because they are inherently unsafe.

其他方法

除了創(chuàng)建啟動(dòng)外,NSThread 還以很多方法,下面我列舉一些常見的方法,當(dāng)然我列舉的并不完整,更多方法大家可以去類的定義里去看。

OBJECTIVE-C
//取消線程 - (void)cancel;//啟動(dòng)線程 - (void)start; //判斷某個(gè)線程的狀態(tài)的屬性 @property (readonly, getter=isExecuting) BOOL executing; @property (readonly, getter=isFinished) BOOL finished; @property (readonly, getter=isCancelled) BOOL cancelled; //設(shè)置和獲取線程名字 -(void)setName:(NSString *)n; -(NSString *)name; //獲取當(dāng)前線程信息 + (NSThread *)currentThread; //獲取主線程信息 + (NSThread *)mainThread; //使當(dāng)前線程暫停一段時(shí)間,或者暫停到某個(gè)時(shí)刻 + (void)sleepForTimeInterval:(NSTimeInterval)time; + (void)sleepUntilDate:(NSDate *)date;
SWIFT

Swift的方法名字和OC的方法名都一樣,我就不浪費(fèi)空間列舉出來(lái)了。

其實(shí),NSThread 用起來(lái)也挺簡(jiǎn)單的,因?yàn)樗湍菐追N方法。同時(shí),我們也只有在一些非常簡(jiǎn)單的場(chǎng)景才會(huì)用 NSThread, 畢竟它還不夠智能,不能優(yōu)雅地處理多線程中的其他高級(jí)概念。所以接下來(lái)要說(shuō)的內(nèi)容才是重點(diǎn)。

GCD

Grand Central Dispatch,聽名字就霸氣。它是蘋果為多核的并行運(yùn)算提出的解決方案,所以會(huì)自動(dòng)合理地利用更多的CPU內(nèi)核(比如雙核、四核),最重要的是它會(huì)自動(dòng)管理線程的生命周期(創(chuàng)建線程、調(diào)度任務(wù)、銷毀線程),完全不需要我們管理,我們只需要告訴干什么就行。同時(shí)它使用的也是 c語(yǔ)言,不過(guò)由于使用了 Block(Swift里叫做閉包),使得使用起來(lái)更加方便,而且靈活。所以基本上大家都使用 GCD 這套方案,老少咸宜,實(shí)在是居家旅行、殺人滅口,必備良藥。不好意思,有點(diǎn)中二,咱們繼續(xù)。

任務(wù)和隊(duì)列

在 GCD 中,加入了兩個(gè)非常重要的概念: 任務(wù)隊(duì)列

  • 任務(wù):即操作,你想要干什么,說(shuō)白了就是一段代碼,在 GCD 中就是一個(gè) Block,所以添加任務(wù)十分方便。任務(wù)有兩種執(zhí)行方式: 同步執(zhí)行異步執(zhí)行,他們之間的區(qū)別是 是否會(huì)創(chuàng)建新的線程。

    同步執(zhí)行:只要是同步執(zhí)行的任務(wù),都會(huì)在當(dāng)前線程執(zhí)行,不會(huì)另開線程。

    異步執(zhí)行:只要是異步執(zhí)行的任務(wù),都會(huì)另開線程,在別的線程執(zhí)行。

    更新
    這里說(shuō)的并不準(zhǔn)確,同步(sync) 和 異步(async) 的主要區(qū)別在于會(huì)不會(huì)阻塞當(dāng)前線程,直到 Block 中的任務(wù)執(zhí)行完畢!
    如果是 同步(sync) 操作,它會(huì)阻塞當(dāng)前線程并等待 Block 中的任務(wù)執(zhí)行完畢,然后當(dāng)前線程才會(huì)繼續(xù)往下運(yùn)行。
    如果是 異步(async)操作,當(dāng)前線程會(huì)直接往下執(zhí)行,它不會(huì)阻塞當(dāng)前線程。

  • 隊(duì)列:用于存放任務(wù)。一共有兩種隊(duì)列, 串行隊(duì)列并行隊(duì)列

    串行隊(duì)列 中的任務(wù)會(huì)根據(jù)隊(duì)列的定義 FIFO 的執(zhí)行,一個(gè)接一個(gè)的先進(jìn)先出的進(jìn)行執(zhí)行。

    更新:放到串行隊(duì)列的任務(wù),GCD 會(huì) FIFO(先進(jìn)先出) 地取出來(lái)一個(gè),執(zhí)行一個(gè),然后取下一個(gè),這樣一個(gè)一個(gè)的執(zhí)行。

    并行隊(duì)列 中的任務(wù) 根據(jù)同步或異步有不同的執(zhí)行方式。

    更新:放到并行隊(duì)列的任務(wù),GCD 也會(huì) FIFO的取出來(lái),但不同的是,它取出來(lái)一個(gè)就會(huì)放到別的線程,然后再取出來(lái)一個(gè)又放到另一個(gè)的線程。這樣由于取的動(dòng)作很快,忽略不計(jì),看起來(lái),所有的任務(wù)都是一起執(zhí)行的。不過(guò)需要注意,GCD 會(huì)根據(jù)系統(tǒng)資源控制并行的數(shù)量,所以如果任務(wù)很多,它并不會(huì)讓所有任務(wù)同時(shí)執(zhí)行。

雖然很繞,但請(qǐng)看下表:

?同步執(zhí)行異步執(zhí)行
串行隊(duì)列當(dāng)前線程,一個(gè)一個(gè)執(zhí)行其他線程,一個(gè)一個(gè)執(zhí)行
并行隊(duì)列當(dāng)前線程,一個(gè)一個(gè)執(zhí)行開很多線程,一起執(zhí)行

創(chuàng)建隊(duì)列

  • 主隊(duì)列:這是一個(gè)特殊的 串行隊(duì)列。什么是主隊(duì)列,大家都知道吧,它用于刷新 UI,任何需要刷新 UI 的工作都要在主隊(duì)列執(zhí)行,所以一般耗時(shí)的任務(wù)都要放到別的線程執(zhí)行。

    //OBJECTIVE-Cdispatch_queue_t queue = ispatch_get_main_queue(); //SWIFT let queue = ispatch_get_main_queue()
  • 自己創(chuàng)建的隊(duì)列:凡是自己創(chuàng)建的隊(duì)列都是 串行隊(duì)列。 其中第一個(gè)參數(shù)是標(biāo)識(shí)符,用于 DEBUG 的時(shí)候標(biāo)識(shí)唯一的隊(duì)列,可以為空。大家可以看xcode的文檔查看參數(shù)意義。

    更新:自己可以創(chuàng)建 串行隊(duì)列, 也可以創(chuàng)建 并行隊(duì)列。看下面的代碼(代碼已更新),它有兩個(gè)參數(shù),第一個(gè)上面已經(jīng)說(shuō)了,第二個(gè)才是最重要的。
    第二個(gè)參數(shù)用來(lái)表示創(chuàng)建的隊(duì)列是串行的還是并行的,傳入 DISPATCH_QUEUE_SERIAL 或 NULL 表示創(chuàng)建串行隊(duì)列。傳入 DISPATCH_QUEUE_CONCURRENT 表示創(chuàng)建并行隊(duì)列。

    //OBJECTIVE-C//串行隊(duì)列dispatch_queue_t queue = dispatch_queue_create("tk.bourne.testQueue", NULL); dispatch_queue_t queue = dispatch_queue_create("tk.bourne.testQueue", DISPATCH_QUEUE_SERIAL); //并行隊(duì)列 dispatch_queue_t queue = dispatch_queue_create("tk.bourne.testQueue", DISPATCH_QUEUE_CONCURRENT); //SWIFT //串行隊(duì)列 let queue = dispatch_queue_create("tk.bourne.testQueue", nil); let queue = dispatch_queue_create("tk.bourne.testQueue", DISPATCH_QUEUE_SERIAL) //并行隊(duì)列 let queue = dispatch_queue_create("tk.bourne.testQueue", DISPATCH_QUEUE_CONCURRENT)
  • 全局并行隊(duì)列:這應(yīng)該是唯一一個(gè)并行隊(duì)列, 只要是并行任務(wù)一般都加入到這個(gè)隊(duì)列。這是系統(tǒng)提供的一個(gè)并發(fā)隊(duì)列。

    //OBJECTIVE-Cdispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); //SWIFT let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)

創(chuàng)建任務(wù)

  • 同步任務(wù): 不會(huì)另開線程 改:會(huì)阻塞當(dāng)前線程 (SYNC)

    OBJECTIVE-C
    dispatch_sync(<#queue#>, ^{//code hereNSLog(@"%@", [NSThread currentThread]); });
    SWIFT
    dispatch_sync(<#queue#>, { () -> Void in//code hereprintln(NSThread.currentThread()) })
  • 異步任務(wù):會(huì)另開線程 改:不會(huì)阻塞當(dāng)前線程 (ASYNC)

    OBJECTIVE-C
    dispatch_async(<#queue#>, ^{//code hereNSLog(@"%@", [NSThread currentThread]); });
    SWIFT
    dispatch_async(<#queue#>, { () -> Void in//code hereprintln(NSThread.currentThread()) })

更新
為了更好的理解同步和異步,和各種隊(duì)列的使用,下面看兩個(gè)示例:

示例一:
以下代碼在主線程調(diào)用,結(jié)果是什么?

NSLog("之前 - %@", NSThread.currentThread()) dispatch_sync(dispatch_get_main_queue(), { () -> Void in NSLog("sync - %@", NSThread.currentThread()) }) NSLog("之后 - %@", NSThread.currentThread())

答案:
只會(huì)打印第一句:之前 - <NSThread: 0x7fb3a9e16470>{number = 1, name = main} ,然后主線程就卡死了,你可以在界面上放一個(gè)按鈕,你就會(huì)發(fā)現(xiàn)點(diǎn)不了了。
解釋:
同步任務(wù)會(huì)阻塞當(dāng)前線程,然后把 Block 中的任務(wù)放到指定的隊(duì)列中執(zhí)行,只有等到 Block 中的任務(wù)完成后才會(huì)讓當(dāng)前線程繼續(xù)往下運(yùn)行。
那么這里的步驟就是:打印完第一句后,dispatch_sync 立即阻塞當(dāng)前的主線程,然后把 Block 中的任務(wù)放到 main_queue 中,可是 main_queue 中的任務(wù)會(huì)被取出來(lái)放到主線程中執(zhí)行,但主線程這個(gè)時(shí)候已經(jīng)被阻塞了,所以 Block 中的任務(wù)就不能完成,它不完成,dispatch_sync 就會(huì)一直阻塞主線程,這就是死鎖現(xiàn)象。導(dǎo)致主線程一直卡死。

示例二:
以下代碼會(huì)產(chǎn)生什么結(jié)果?

let queue = dispatch_queue_create("myQueue", DISPATCH_QUEUE_SERIAL)NSLog("之前 - %@", NSThread.currentThread()) dispatch_async(queue, { () -> Void in NSLog("sync之前 - %@", NSThread.currentThread()) dispatch_sync(queue, { () -> Void in NSLog("sync - %@", NSThread.currentThread()) }) NSLog("sync之后 - %@", NSThread.currentThread()) }) NSLog("之后 - %@", NSThread.currentThread())

答案:
2015-07-30 02:06:51.058 test[33329:8793087] 之前 - <NSThread: 0x7fe32050dbb0>{number = 1, name = main}
2015-07-30 02:06:51.059 test[33329:8793356] sync之前 - <NSThread: 0x7fe32062e9f0>{number = 2, name = (null)}
2015-07-30 02:06:51.059 test[33329:8793087] 之后 - <NSThread: 0x7fe32050dbb0>{number = 1, name = main}
很明顯 sync - %@ 和 sync之后 - %@ 沒(méi)有被打印出來(lái)!這是為什么呢?我們?cè)賮?lái)分析一下:

分析:
我們按執(zhí)行順序一步步來(lái)哦:

  • 使用 DISPATCH_QUEUE_SERIAL 這個(gè)參數(shù),創(chuàng)建了一個(gè) 串行隊(duì)列
  • 打印出 之前 - %@ 這句。
  • dispatch_async 異步執(zhí)行,所以當(dāng)前線程不會(huì)被阻塞,于是有了兩條線程,一條當(dāng)前線程繼續(xù)往下打印出 之后 - %@這句, 另一臺(tái)執(zhí)行 Block 中的內(nèi)容打印 sync之前 - %@ 這句。因?yàn)檫@兩條是并行的,所以打印的先后順序無(wú)所謂。
  • 注意,高潮來(lái)了。現(xiàn)在的情況和上一個(gè)例子一樣了。dispatch_sync同步執(zhí)行,于是它所在的線程會(huì)被阻塞,一直等到 sync 里的任務(wù)執(zhí)行完才會(huì)繼續(xù)往下。于是 sync 就高興的把自己 Block 中的任務(wù)放到 queue 中,可誰(shuí)想 queue 是一個(gè)串行隊(duì)列,一次執(zhí)行一個(gè)任務(wù),所以 sync 的 Block 必須等到前一個(gè)任務(wù)執(zhí)行完畢,可萬(wàn)萬(wàn)沒(méi)想到的是 queue 正在執(zhí)行的任務(wù)就是被 sync 阻塞了的那個(gè)。于是又發(fā)生了死鎖。所以 sync 所在的線程被卡死了。剩下的兩句代碼自然不會(huì)打印。
  • 隊(duì)列組

    隊(duì)列組可以將很多隊(duì)列添加到一個(gè)組里,這樣做的好處是,當(dāng)這個(gè)組里所有的任務(wù)都執(zhí)行完了,隊(duì)列組會(huì)通過(guò)一個(gè)方法通知我們。下面是使用方法,這是一個(gè)很實(shí)用的功能。

    OBJECTIVE-C
    //1.創(chuàng)建隊(duì)列組 dispatch_group_t group = dispatch_group_create(); //2.創(chuàng)建隊(duì)列 dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); //3.多次使用隊(duì)列組的方法執(zhí)行任務(wù), 只有異步方法 //3.1.執(zhí)行3次循環(huán) dispatch_group_async(group, queue, ^{ for (NSInteger i = 0; i < 3; i++) { NSLog(@"group-01 - %@", [NSThread currentThread]); } }); //3.2.主隊(duì)列執(zhí)行8次循環(huán) dispatch_group_async(group, dispatch_get_main_queue(), ^{ for (NSInteger i = 0; i < 8; i++) { NSLog(@"group-02 - %@", [NSThread currentThread]); } }); //3.3.執(zhí)行5次循環(huán) dispatch_group_async(group, queue, ^{ for (NSInteger i = 0; i < 5; i++) { NSLog(@"group-03 - %@", [NSThread currentThread]); } }); //4.都完成后會(huì)自動(dòng)通知 dispatch_group_notify(group, dispatch_get_main_queue(), ^{ NSLog(@"完成 - %@", [NSThread currentThread]); });
    SWIFT
    //1.創(chuàng)建隊(duì)列組 let group = dispatch_group_create() //2.創(chuàng)建隊(duì)列 let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) //3.多次使用隊(duì)列組的方法執(zhí)行任務(wù), 只有異步方法 //3.1.執(zhí)行3次循環(huán) dispatch_group_async(group, queue) { () -> Void in for _ in 0..<3 { NSLog("group-01 - %@", NSThread.currentThread()) } } //3.2.主隊(duì)列執(zhí)行8次循環(huán) dispatch_group_async(group, dispatch_get_main_queue()) { () -> Void in for _ in 0..<8 { NSLog("group-02 - %@", NSThread.currentThread()) } } //3.3.執(zhí)行5次循環(huán) dispatch_group_async(group, queue) { () -> Void in for _ in 0..<5 { NSLog("group-03 - %@", NSThread.currentThread()) } } //4.都完成后會(huì)自動(dòng)通知 dispatch_group_notify(group, dispatch_get_main_queue()) { () -> Void in NSLog("完成 - %@", NSThread.currentThread()) }

    打印結(jié)果

    2015-07-28 03:40:34.277 test[12540:3319271] group-03 - <NSThread: 0x7f9772536f00>{number = 3, name = (null)}

    2015-07-28 03:40:34.277 test[12540:3319146] group-02 - <NSThread: 0x7f977240ba60>{number = 1, name = main}

    2015-07-28 03:40:34.277 test[12540:3319146] group-02 - <NSThread: 0x7f977240ba60>{number = 1, name = main}

    2015-07-28 03:40:34.277 test[12540:3319271] group-03 - <NSThread: 0x7f9772536f00>{number = 3, name = (null)}

    2015-07-28 03:40:34.278 test[12540:3319146] group-02 - <NSThread: 0x7f977240ba60>{number = 1, name = main}

    2015-07-28 03:40:34.278 test[12540:3319271] group-03 - <NSThread: 0x7f9772536f00>{number = 3, name = (null)}

    2015-07-28 03:40:34.278 test[12540:3319271] group-03 - <NSThread: 0x7f9772536f00>{number = 3, name = (null)}

    2015-07-28 03:40:34.278 test[12540:3319146] group-02 - <NSThread: 0x7f977240ba60>{number = 1, name = main}

    2015-07-28 03:40:34.277 test[12540:3319273] group-01 - <NSThread: 0x7f977272e8d0>{number = 2, name = (null)}

    2015-07-28 03:40:34.278 test[12540:3319271] group-03 - <NSThread: 0x7f9772536f00>{number = 3, name = (null)}

    2015-07-28 03:40:34.278 test[12540:3319146] group-02 - <NSThread: 0x7f977240ba60>{number = 1, name = main}

    2015-07-28 03:40:34.278 test[12540:3319273] group-01 - <NSThread: 0x7f977272e8d0>{number = 2, name = (null)}

    2015-07-28 03:40:34.278 test[12540:3319146] group-02 - <NSThread: 0x7f977240ba60>{number = 1, name = main}

    2015-07-28 03:40:34.278 test[12540:3319273] group-01 - <NSThread: 0x7f977272e8d0>{number = 2, name = (null)}

    2015-07-28 03:40:34.279 test[12540:3319146] group-02 - <NSThread: 0x7f977240ba60>{number = 1, name = main}

    2015-07-28 03:40:34.279 test[12540:3319146] group-02 - <NSThread: 0x7f977240ba60>{number = 1, name = main}

    2015-07-28 03:40:34.279 test[12540:3319146] 完成 - <NSThread: 0x7f977240ba60>{number = 1, name = main}


    這些就是 GCD 的基本功能,但是它的能力遠(yuǎn)不止這些,等講完 NSOperation 后,我們?cè)賮?lái)看看它的一些其他方面用途。而且,只要你想象力夠豐富,你可以組合出更好的用法。

    更新:關(guān)于GCD,還有兩個(gè)需要說(shuō)的:

    • func dispatch_barrier_async(_ queue: dispatch_queue_t, _ block: dispatch_block_t):
      這個(gè)方法重點(diǎn)是你傳入的 queue,當(dāng)你傳入的 queue 是通過(guò) DISPATCH_QUEUE_CONCURRENT 參數(shù)自己創(chuàng)建的 queue 時(shí),這個(gè)方法會(huì)阻塞這個(gè) queue注意是阻塞 queue ,而不是阻塞當(dāng)前線程),一直等到這個(gè) queue 中排在它前面的任務(wù)都執(zhí)行完成后才會(huì)開始執(zhí)行自己,自己執(zhí)行完畢后,再會(huì)取消阻塞,使這個(gè) queue 中排在它后面的任務(wù)繼續(xù)執(zhí)行。
      如果你傳入的是其他的 queue, 那么它就和 dispatch_async 一樣了。

    • func dispatch_barrier_sync(_ queue: dispatch_queue_t, _ block: dispatch_block_t):
      這個(gè)方法的使用和上一個(gè)一樣,傳入 自定義的并發(fā)隊(duì)列(DISPATCH_QUEUE_CONCURRENT),它和上一個(gè)方法一樣的阻塞 queue,不同的是 這個(gè)方法還會(huì) 阻塞當(dāng)前線程
      如果你傳入的是其他的 queue, 那么它就和 dispatch_sync 一樣了。

    NSOperation和NSOperationQueue

    NSOperation 是蘋果公司對(duì) GCD 的封裝,完全面向?qū)ο?#xff0c;所以使用起來(lái)更好理解。 大家可以看到 NSOperation 和 NSOperationQueue 分別對(duì)應(yīng) GCD 的 任務(wù) 和 隊(duì)列 。操作步驟也很好理解:

  • 將要執(zhí)行的任務(wù)封裝到一個(gè) NSOperation 對(duì)象中。
  • 將此任務(wù)添加到一個(gè) NSOperationQueue 對(duì)象中。
  • 然后系統(tǒng)就會(huì)自動(dòng)在執(zhí)行任務(wù)。至于同步還是異步、串行還是并行請(qǐng)繼續(xù)往下看:

    添加任務(wù)

    值得說(shuō)明的是,NSOperation 只是一個(gè)抽象類,所以不能封裝任務(wù)。但它有 2 個(gè)子類用于封裝任務(wù)。分別是:NSInvocationOperation 和 NSBlockOperation 。創(chuàng)建一個(gè) Operation 后,需要調(diào)用 start 方法來(lái)啟動(dòng)任務(wù),它會(huì) 默認(rèn)在當(dāng)前隊(duì)列同步執(zhí)行。當(dāng)然你也可以在中途取消一個(gè)任務(wù),只需要調(diào)用其 cancel 方法即可。

    • NSInvocationOperation : 需要傳入一個(gè)方法名。

      OBJECTIVE-C
      //1.創(chuàng)建NSInvocationOperation對(duì)象NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(run) object:nil]; //2.開始執(zhí)行 [operation start];
      SWIFT

      在 Swift 構(gòu)建的和諧社會(huì)里,是容不下 NSInvocationOperation 這種不是類型安全的敗類的。蘋果如是說(shuō)。這里有相關(guān)解釋

    • NSBlockOperation

      OBJECTIVE-C
      //1.創(chuàng)建NSBlockOperation對(duì)象NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{NSLog(@"%@", [NSThread currentThread]); }]; //2.開始任務(wù) [operation start];
      SWIFT
      //1.創(chuàng)建NSBlockOperation對(duì)象let operation = NSBlockOperation { () -> Void in println(NSThread.currentThread()) } //2.開始任務(wù) operation.start()

      之前說(shuō)過(guò)這樣的任務(wù),默認(rèn)會(huì)在當(dāng)前線程執(zhí)行。但是 NSBlockOperation 還有一個(gè)方法:addExecutionBlock: ,通過(guò)這個(gè)方法可以給 Operation 添加多個(gè)執(zhí)行 Block。這樣 Operation 中的任務(wù) 會(huì)并發(fā)執(zhí)行,它會(huì) 在主線程和其它的多個(gè)線程 執(zhí)行這些任務(wù),注意下面的打印結(jié)果:

      OBJECTIVE-C
      //1.創(chuàng)建NSBlockOperation對(duì)象NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{NSLog(@"%@", [NSThread currentThread]); }]; //添加多個(gè)Block for (NSInteger i = 0; i < 5; i++) { [operation addExecutionBlock:^{ NSLog(@"第%ld次:%@", i, [NSThread currentThread]); }]; } //2.開始任務(wù) [operation start];
      SWIFT
      //1.創(chuàng)建NSBlockOperation對(duì)象let operation = NSBlockOperation { () -> Void in NSLog("%@", NSThread.currentThread()) } //2.添加多個(gè)Block for i in 0..<5 { operation.addExecutionBlock { () -> Void in NSLog("第%ld次 - %@", i, NSThread.currentThread()) } } //2.開始任務(wù) operation.start()
      打印輸出

      2015-07-28 17:50:16.585 test[17527:4095467] 第2次 - <NSThread: 0x7ff5c9701910>{number = 1, name = main}

      2015-07-28 17:50:16.585 test[17527:4095666] 第1次 - <NSThread: 0x7ff5c972caf0>{number = 4, name = (null)}

      2015-07-28 17:50:16.585 test[17527:4095665] <NSThread: 0x7ff5c961b610>{number = 3, name = (null)}

      2015-07-28 17:50:16.585 test[17527:4095662] 第0次 - <NSThread: 0x7ff5c948d310>{number = 2, name = (null)}

      2015-07-28 17:50:16.586 test[17527:4095666] 第3次 - <NSThread: 0x7ff5c972caf0>{number = 4, name = (null)}

      2015-07-28 17:50:16.586 test[17527:4095467] 第4次 - <NSThread: 0x7ff5c9701910>{number = 1, name = main}

      ?

      NOTE:addExecutionBlock 方法必須在 start() 方法之前執(zhí)行,否則就會(huì)報(bào)錯(cuò):

      ‘*** -[NSBlockOperation addExecutionBlock:]: blocks cannot be added after the operation has started executing or finished'

      ?

      NOTE:大家可能發(fā)現(xiàn)了一個(gè)問(wèn)題,為什么我在 Swift 里打印輸出使用 NSLog() 而不是 println() 呢?原因是使用 print() / println() 輸出的話,它會(huì)簡(jiǎn)單地使用 流(stream) 的概念,學(xué)過(guò) C++ 的都知道。它會(huì)把需要輸出的每個(gè)字符一個(gè)一個(gè)的輸出到控制臺(tái)。普通使用并沒(méi)有問(wèn)題,可是當(dāng)多線程同步輸出的時(shí)候問(wèn)題就來(lái)了,由于很多 println() 同時(shí)打印,就會(huì)導(dǎo)致控制臺(tái)上的字符混亂的堆在一起,而NSLog() 就沒(méi)有這個(gè)問(wèn)題。到底是什么樣子的呢?你可以把上面 NSLog() 改為 println() ,然后一試便知。 更多 NSLog() 與 println() 的區(qū)別看這里

    • 自定義Operation

      除了上面的兩種 Operation 以外,我們還可以自定義 Operation。自定義 Operation 需要繼承 NSOperation 類,并實(shí)現(xiàn)其 main() 方法,因?yàn)樵谡{(diào)用 start() 方法的時(shí)候,內(nèi)部會(huì)調(diào)用 main() 方法完成相關(guān)邏輯。所以如果以上的兩個(gè)類無(wú)法滿足你的欲望的時(shí)候,你就需要自定義了。你想要實(shí)現(xiàn)什么功能都可以寫在里面。除此之外,你還需要實(shí)現(xiàn) cancel() 在內(nèi)的各種方法。所以這個(gè)功能提供給高級(jí)玩家,我在這里就不說(shuō)了,等我需要用到時(shí)在研究它,到時(shí)候可能會(huì)再做更新。

    創(chuàng)建隊(duì)列

    看過(guò)上面的內(nèi)容就知道,我們可以調(diào)用一個(gè) NSOperation 對(duì)象的 start() 方法來(lái)啟動(dòng)這個(gè)任務(wù),但是這樣做他們默認(rèn)是 同步執(zhí)行 的。就算是 addExecutionBlock 方法,也會(huì)在 當(dāng)前線程和其他線程 中執(zhí)行,也就是說(shuō)還是會(huì)占用當(dāng)前線程。這是就要用到隊(duì)列 NSOperationQueue 了。而且,按類型來(lái)說(shuō)的話一共有兩種類型:主隊(duì)列、其他隊(duì)列。只要添加到隊(duì)列,會(huì)自動(dòng)調(diào)用任務(wù)的 start() 方法

    • 主隊(duì)列

      細(xì)心的同學(xué)就會(huì)發(fā)現(xiàn),每套多線程方案都會(huì)有一個(gè)主線程(當(dāng)然啦,說(shuō)的是iOS中,像 pthread 這種多系統(tǒng)的方案并沒(méi)有,因?yàn)?UI線程 理論需要每種操作系統(tǒng)自己定制)。這是一個(gè)特殊的線程,必須串行。所以添加到主隊(duì)列的任務(wù)都會(huì)一個(gè)接一個(gè)地排著隊(duì)在主線程處理。

      //OBJECTIVE-C NSOperationQueue *queue = [NSOperationQueue mainQueue];//SWIFT let queue = NSOperationQueue.mainQueue()
    • 其他隊(duì)列

      因?yàn)橹麝?duì)列比較特殊,所以會(huì)單獨(dú)有一個(gè)類方法來(lái)獲得主隊(duì)列。那么通過(guò)初始化產(chǎn)生的隊(duì)列就是其他隊(duì)列了,因?yàn)橹挥羞@兩種隊(duì)列,除了主隊(duì)列,其他隊(duì)列就不需要名字了。

      注意:其他隊(duì)列的任務(wù)會(huì)在其他線程并行執(zhí)行。

      OBJECTIVE-C
      //1.創(chuàng)建一個(gè)其他隊(duì)列 NSOperationQueue *queue = [[NSOperationQueue alloc] init];//2.創(chuàng)建NSBlockOperation對(duì)象 NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{ NSLog(@"%@", [NSThread currentThread]); }]; //3.添加多個(gè)Block for (NSInteger i = 0; i < 5; i++) { [operation addExecutionBlock:^{ NSLog(@"第%ld次:%@", i, [NSThread currentThread]); }]; } //4.隊(duì)列添加任務(wù) [queue addOperation:operation];
      SWIFT
      //1.創(chuàng)建其他隊(duì)列 let queue = NSOperationQueue()//2.創(chuàng)建NSBlockOperation對(duì)象 let operation = NSBlockOperation { () -> Void in NSLog("%@", NSThread.currentThread()) } //3.添加多個(gè)Block for i in 0..<5 { operation.addExecutionBlock { () -> Void in NSLog("第%ld次 - %@", i, NSThread.currentThread()) } } //4.隊(duì)列添加任務(wù) queue.addOperation(operation)
      打印輸出

      2015-07-28 20:26:28.463 test[18622:4443534] <NSThread: 0x7fd022c3ac10>{number = 5, name = (null)}

      2015-07-28 20:26:28.463 test[18622:4443536] 第2次 - <NSThread: 0x7fd022e36d50>{number = 2, name = (null)}

      2015-07-28 20:26:28.463 test[18622:4443535] 第0次 - <NSThread: 0x7fd022f237f0>{number = 4, name = (null)}

      2015-07-28 20:26:28.463 test[18622:4443533] 第1次 - <NSThread: 0x7fd022d372b0>{number = 3, name = (null)}

      2015-07-28 20:26:28.463 test[18622:4443534] 第3次 - <NSThread: 0x7fd022c3ac10>{number = 5, name = (null)}

      2015-07-28 20:26:28.463 test[18622:4443536] 第4次 - <NSThread: 0x7fd022e36d50>{number = 2, name = (null)}

    OK, 這時(shí)應(yīng)該發(fā)問(wèn)了,大家將 NSOperationQueue 與 GCD的隊(duì)列 相比較就會(huì)發(fā)現(xiàn),這里沒(méi)有串行隊(duì)列,那如果我想要10個(gè)任務(wù)在其他線程串行的執(zhí)行怎么辦?

    這就是蘋果封裝的妙處,你不用管串行、并行、同步、異步這些名詞。NSOperationQueue 有一個(gè)參數(shù) maxConcurrentOperationCount 最大并發(fā)數(shù),用來(lái)設(shè)置最多可以讓多少個(gè)任務(wù)同時(shí)執(zhí)行。當(dāng)你把它設(shè)置為 1 的時(shí)候,他不就是串行了嘛!

    NSOperationQueue 還有一個(gè)添加任務(wù)的方法,- (void)addOperationWithBlock:(void (^)(void))block; ,這是不是和 GCD 差不多?這樣就可以添加一個(gè)任務(wù)到隊(duì)列中了,十分方便。

    NSOperation 有一個(gè)非常實(shí)用的功能,那就是添加依賴。比如有 3 個(gè)任務(wù):A: 從服務(wù)器上下載一張圖片,B:給這張圖片加個(gè)水印,C:把圖片返回給服務(wù)器。這時(shí)就可以用到依賴了:

    OBJECTIVE-C
    //1.任務(wù)一:下載圖片 NSBlockOperation *operation1 = [NSBlockOperation blockOperationWithBlock:^{NSLog(@"下載圖片 - %@", [NSThread currentThread]); [NSThread sleepForTimeInterval:1.0]; }]; //2.任務(wù)二:打水印 NSBlockOperation *operation2 = [NSBlockOperation blockOperationWithBlock:^{ NSLog(@"打水印 - %@", [NSThread currentThread]); [NSThread sleepForTimeInterval:1.0]; }]; //3.任務(wù)三:上傳圖片 NSBlockOperation *operation3 = [NSBlockOperation blockOperationWithBlock:^{ NSLog(@"上傳圖片 - %@", [NSThread currentThread]); [NSThread sleepForTimeInterval:1.0]; }]; //4.設(shè)置依賴 [operation2 addDependency:operation1]; //任務(wù)二依賴任務(wù)一 [operation3 addDependency:operation2]; //任務(wù)三依賴任務(wù)二 //5.創(chuàng)建隊(duì)列并加入任務(wù) NSOperationQueue *queue = [[NSOperationQueue alloc] init]; [queue addOperations:@[operation3, operation2, operation1] waitUntilFinished:NO];
    SWIFT
    //1.任務(wù)一:下載圖片 let operation1 = NSBlockOperation { () -> Void in NSLog("下載圖片 - %@", NSThread.currentThread()) NSThread.sleepForTimeInterval(1.0) } //2.任務(wù)二:打水印 let operation2 = NSBlockOperation { () -> Void in NSLog("打水印 - %@", NSThread.currentThread()) NSThread.sleepForTimeInterval(1.0) } //3.任務(wù)三:上傳圖片 let operation3 = NSBlockOperation { () -> Void in NSLog("上傳圖片 - %@", NSThread.currentThread()) NSThread.sleepForTimeInterval(1.0) } //4.設(shè)置依賴 operation2.addDependency(operation1) //任務(wù)二依賴任務(wù)一 operation3.addDependency(operation2) //任務(wù)三依賴任務(wù)二 //5.創(chuàng)建隊(duì)列并加入任務(wù) let queue = NSOperationQueue() queue.addOperations([operation3, operation2, operation1], waitUntilFinished: false)
    打印結(jié)果

    2015-07-28 21:24:28.622 test[19392:4637517] 下載圖片 - <NSThread: 0x7fc10ad4d970>{number = 2, name = (null)}

    2015-07-28 21:24:29.622 test[19392:4637515] 打水印 - <NSThread: 0x7fc10af20ef0>{number = 3, name = (null)}

    2015-07-28 21:24:30.627 test[19392:4637515] 上傳圖片 - <NSThread: 0x7fc10af20ef0>{number = 3, name = (null)}

    • 注意:不能添加相互依賴,會(huì)死鎖,比如 A依賴B,B依賴A。
    • 可以使用 removeDependency 來(lái)解除依賴關(guān)系。
    • 可以在不同的隊(duì)列之間依賴,反正就是這個(gè)依賴是添加到任務(wù)身上的,和隊(duì)列沒(méi)關(guān)系。

    其他方法

    以上就是一些主要方法, 下面還有一些常用方法需要大家注意:

    • NSOperation

      BOOL executing; //判斷任務(wù)是否正在執(zhí)行

      BOOL finished; //判斷任務(wù)是否完成

      void (^completionBlock)(void); //用來(lái)設(shè)置完成后需要執(zhí)行的操作

      - (void)cancel; //取消任務(wù)

      - (void)waitUntilFinished; //阻塞當(dāng)前線程直到此任務(wù)執(zhí)行完畢

    • NSOperationQueue

      NSUInteger operationCount; //獲取隊(duì)列的任務(wù)數(shù)

      - (void)cancelAllOperations; //取消隊(duì)列中所有的任務(wù)

      - (void)waitUntilAllOperationsAreFinished; //阻塞當(dāng)前線程直到此隊(duì)列中的所有任務(wù)執(zhí)行完畢

      [queue setSuspended:YES]; // 暫停queue

      [queue setSuspended:NO]; // 繼續(xù)queue

    好啦,到這里差不多就講完了。當(dāng)然,我講的并不完整,可能有一些知識(shí)我并沒(méi)有講到,但作為常用方法,這些已經(jīng)足夠了。不過(guò)我在這里只是告訴你了一些方法的功能,只是怎么把他們用到合適的地方,就需要多多實(shí)踐了。下面我會(huì)說(shuō)一些關(guān)于多線程的案例,是大家更加什么地了解。

    其他用法

    在這部分,我會(huì)說(shuō)一些和多線程知識(shí)相關(guān)的案例,可能有些很簡(jiǎn)單,大家早都知道的,不過(guò)因?yàn)檫@篇文章講的是多線程嘛,所以應(yīng)該盡可能的全面嘛。還有就是,我會(huì)盡可能的使用多種方法實(shí)現(xiàn),讓大家看看其中的區(qū)別。

    線程同步

    所謂線程同步就是為了防止多個(gè)線程搶奪同一個(gè)資源造成的數(shù)據(jù)安全問(wèn)題,所采取的一種措施。當(dāng)然也有很多實(shí)現(xiàn)方法,請(qǐng)往下看:

    • 互斥鎖 :給需要同步的代碼塊加一個(gè)互斥鎖,就可以保證每次只有一個(gè)線程訪問(wèn)此代碼塊。

      OBJECTIVE-C
      @synchronized(self) {//需要執(zhí)行的代碼塊 }
      SWIFT
      objc_sync_enter(self) //需要執(zhí)行的代碼塊 objc_sync_exit(self)
    • 同步執(zhí)行 :我們可以使用多線程的知識(shí),把多個(gè)線程都要執(zhí)行此段代碼添加到同一個(gè)串行隊(duì)列,這樣就實(shí)現(xiàn)了線程同步的概念。當(dāng)然這里可以使用 GCD 和 NSOperation 兩種方案,我都寫出來(lái)。

      OBJECTIVE-C
    //GCD//需要一個(gè)全局變量queue,要讓所有線程的這個(gè)操作都加到一個(gè)queue中dispatch_sync(queue, ^{NSInteger ticket = lastTicket; [NSThread sleepForTimeInterval:0.1]; NSLog(@"%ld - %@",ticket, [NSThread currentThread]); ticket -= 1; lastTicket = ticket; }); //NSOperation & NSOperationQueue //重點(diǎn):1. 全局的 NSOperationQueue, 所有的操作添加到同一個(gè)queue中 // 2. 設(shè)置 queue 的 maxConcurrentOperationCount 為 1 // 3. 如果后續(xù)操作需要Block中的結(jié)果,就需要調(diào)用每個(gè)操作的waitUntilFinished,阻塞當(dāng)前線程,一直等到當(dāng)前操作完成,才允許執(zhí)行后面的。waitUntilFinished 要在添加到隊(duì)列之后! NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{ NSInteger ticket = lastTicket; [NSThread sleepForTimeInterval:1]; NSLog(@"%ld - %@",ticket, [NSThread currentThread]); ticket -= 1; lastTicket = ticket; }]; [queue addOperation:operation]; [operation waitUntilFinished]; //后續(xù)要做的事
    SWIFT

    這里的 swift 代碼,我就不寫了,因?yàn)槊烤涠家粯?#xff0c;只是語(yǔ)法不同而已,照著 OC 的代碼就能寫出 Swift 的。這篇文章已經(jīng)老長(zhǎng)老長(zhǎng)了,我就不浪費(fèi)篇幅了,又不是高中寫作文。

    延遲執(zhí)行

    所謂延遲執(zhí)行就是延時(shí)一段時(shí)間再執(zhí)行某段代碼。下面說(shuō)一些常用方法。

    • perform

      OBJECTIVE-C
      // 3秒后自動(dòng)調(diào)用self的run:方法,并且傳遞參數(shù):@"abc"[self performSelector:@selector(run:) withObject:@"abc" afterDelay:3];
      SWIFT
      之前就已經(jīng)說(shuō)過(guò),Swift 里去掉了這個(gè)方法。
    • GCD

      可以使用 GCD 中的 dispatch_after 方法,OC 和 Swift 都可以使用,這里只寫 OC 的,Swift 的是一樣的。

      OBJECTIVE-C
      // 創(chuàng)建隊(duì)列 dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); // 設(shè)置延時(shí),單位秒 double delay = 3; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delay * NSEC_PER_SEC)), queue, ^{ // 3秒后需要執(zhí)行的任務(wù) });
    • NSTimer

      NSTimer 是iOS中的一個(gè)計(jì)時(shí)器類,除了延遲執(zhí)行還有很多用法,不過(guò)這里直說(shuō)延遲執(zhí)行的用法。同樣只寫 OC 版的,Swift 也是相同的。

      OBJECTIVE-C
      [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(run:) userInfo:@"abc" repeats:NO];

    單例模式

    至于什么是單例模式,我也不多說(shuō),我只說(shuō)說(shuō)一般怎么實(shí)現(xiàn)。在 Objective-C 中,實(shí)現(xiàn)單例的方法已經(jīng)很具體了,雖然有別的方法,但是一般都是用一個(gè)標(biāo)準(zhǔn)的方法了,下面來(lái)看看。

    OBJECTIVE-C
    @interface Tool : NSObject <NSCopying> + (instancetype)sharedTool; @end @implementation Tool static id _instance; + (instancetype)sharedTool { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ _instance = [[Tool alloc] init]; }); return _instance; } @end

    這里之所以將單例模式,是因?yàn)槠渲杏玫搅?GCD 的 dispatch_once 方法。下面看 Swift 中的單例模式,在Swift中單例模式非常簡(jiǎn)單!想知道怎么從 OC 那么復(fù)雜的方法變成下面的寫法的,請(qǐng)看這里

    SWIFT
    class Tool: NSObject { static let sharedTool = Tool() // 私有化構(gòu)造方法,阻止其他對(duì)象使用這個(gè)類的默認(rèn)的'()'構(gòu)造方法 private override init() {} }

    從其他線程回到主線程的方法

    我們都知道在其他線程操作完成后必須到主線程更新UI。所以,介紹完所有的多線程方案后,我們來(lái)看看有哪些方法可以回到主線程。

    • NSThread

      //Objective-C [self performSelectorOnMainThread:@selector(run) withObject:nil waitUntilDone:NO]; //Swift //swift 取消了 performSelector 方法。
    • GCD

      //Objective-C dispatch_async(dispatch_get_main_queue(), ^{}); //Swift dispatch_async(dispatch_get_main_queue(), { () -> Void in })
    • NSOperationQueue

      //Objective-C [[NSOperationQueue mainQueue] addOperationWithBlock:^{}];//Swift NSOperationQueue.mainQueue().addOperationWithBlock { () -> Void in }

    總結(jié)

    好的吧,總算寫完了,純手敲6k多字,感動(dòng)死我了。花了兩天,時(shí)間跨度有點(diǎn)大,所以可能有些地方上段不接下段或者有的地方不完整,如果你看著比較費(fèi)力或者有什么地方有問(wèn)題,都可以在評(píng)論區(qū)告訴我,我會(huì)及時(shí)修改的。當(dāng)然啦,多線程的東西也不止這些,題目也就只是個(gè)題目,不要當(dāng)真。想要了解更多的東西,還得自己去網(wǎng)上挖掘相關(guān)資料。多看看官方文檔。實(shí)在是編不下去了,大家好好看~。對(duì)了,看我寫的這么賣力,不打賞的話得點(diǎn)個(gè)喜歡也是極好的。

    更新:第一次放出來(lái)的時(shí)候,有很多地方有錯(cuò)誤,很感謝有朋友提出來(lái)了。如果你看到有錯(cuò)誤的地方,一定記得指出來(lái),這樣對(duì)大家都有幫助。還有一點(diǎn)對(duì)初學(xué)者來(lái)說(shuō),遇到不懂的方法,最好的辦法就是查看官方文檔,那里是最準(zhǔn)確的,就算有幾個(gè)單詞不認(rèn)識(shí),查一下就好了,不會(huì)影響對(duì)整體的理解。
    我看到有網(wǎng)站轉(zhuǎn)載了我的文章,但轉(zhuǎn)載的可能存在問(wèn)題,而我只能在簡(jiǎn)書上更新,所以如果要看 完整版本 還是到簡(jiǎn)書來(lái)看吧:這里是地址。



    原文鏈接:http://www.jianshu.com/p/0b0d9b1f1f19
    著作權(quán)歸作者所有,轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),并標(biāo)注“簡(jiǎn)書作者”。

    轉(zhuǎn)載于:https://www.cnblogs.com/graveliang/p/5693835.html

    總結(jié)

    以上是生活随笔為你收集整理的iOS四种多线程(swift和oc)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    2019nv天堂香蕉在线观看 | 午夜男女很黄的视频 | 漂亮人妻洗澡被公强 日日躁 | 亚洲精品国产精品乱码视色 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | a在线亚洲男人的天堂 | 国产成人无码一二三区视频 | 国产乡下妇女做爰 | 精品水蜜桃久久久久久久 | 99久久婷婷国产综合精品青草免费 | 国产成人无码a区在线观看视频app | 精品国产乱码久久久久乱码 | 学生妹亚洲一区二区 | 99久久无码一区人妻 | 狠狠亚洲超碰狼人久久 | 亚洲成色www久久网站 | 老熟妇乱子伦牲交视频 | 高清国产亚洲精品自在久久 | 特级做a爰片毛片免费69 | 国产精品久久久av久久久 | 夜精品a片一区二区三区无码白浆 | 婷婷丁香六月激情综合啪 | 成年美女黄网站色大免费全看 | 国产在线精品一区二区三区直播 | 精品无码av一区二区三区 | 亚洲天堂2017无码 | 精品无码国产自产拍在线观看蜜 | 无码任你躁久久久久久久 | 2020久久香蕉国产线看观看 | 丰满少妇熟乱xxxxx视频 | 日韩精品无码免费一区二区三区 | 激情亚洲一区国产精品 | 久久人妻内射无码一区三区 | 国产精品第一国产精品 | 国产精品美女久久久久av爽李琼 | 久久综合狠狠综合久久综合88 | 国产成人精品视频ⅴa片软件竹菊 | 亚洲中文字幕在线观看 | 高潮毛片无遮挡高清免费视频 | 中文字幕av伊人av无码av | 性色欲网站人妻丰满中文久久不卡 | 久久婷婷五月综合色国产香蕉 | 婷婷丁香五月天综合东京热 | 亚洲一区av无码专区在线观看 | 欧美精品无码一区二区三区 | 爆乳一区二区三区无码 | 东京无码熟妇人妻av在线网址 | 欧美日韩综合一区二区三区 | 内射后入在线观看一区 | 67194成是人免费无码 | 男女下面进入的视频免费午夜 | 夜先锋av资源网站 | 欧美性色19p | 久久人人爽人人爽人人片av高清 | 女人被男人躁得好爽免费视频 | 精品国产av色一区二区深夜久久 | 精品日本一区二区三区在线观看 | √天堂中文官网8在线 | 中文字幕无码日韩欧毛 | 久久久av男人的天堂 | 国产肉丝袜在线观看 | 久久久中文久久久无码 | 国产精品爱久久久久久久 | 人妻有码中文字幕在线 | 色欲人妻aaaaaaa无码 | 国产精品怡红院永久免费 | 亚洲欧洲无卡二区视頻 | 日韩人妻少妇一区二区三区 | 久久99精品久久久久久动态图 | 97久久精品无码一区二区 | 日本www一道久久久免费榴莲 | aa片在线观看视频在线播放 | 2019nv天堂香蕉在线观看 | 欧美人与善在线com | 欧美熟妇另类久久久久久多毛 | 国产福利视频一区二区 | 久久亚洲精品中文字幕无男同 | 久久精品一区二区三区四区 | 桃花色综合影院 | 欧美高清在线精品一区 | 亚洲 a v无 码免 费 成 人 a v | 无码av中文字幕免费放 | 一本久久伊人热热精品中文字幕 | 日本护士毛茸茸高潮 | 亚洲男人av天堂午夜在 | 色 综合 欧美 亚洲 国产 | 亚洲小说图区综合在线 | 久久综合九色综合欧美狠狠 | 国产精品毛多多水多 | 国产日产欧产精品精品app | 亚洲日本在线电影 | 纯爱无遮挡h肉动漫在线播放 | 免费视频欧美无人区码 | 国产精品国产自线拍免费软件 | 玩弄人妻少妇500系列视频 | 亚洲熟妇自偷自拍另类 | 黑人巨大精品欧美黑寡妇 | 天干天干啦夜天干天2017 | 国产精品久久久久久久影院 | 牲欲强的熟妇农村老妇女视频 | 无码精品人妻一区二区三区av | 亚洲一区二区三区播放 | 久久人人97超碰a片精品 | 亚洲综合久久一区二区 | 久久久亚洲欧洲日产国码αv | 国产亚洲精品精品国产亚洲综合 | 强奷人妻日本中文字幕 | 国产精品久久久午夜夜伦鲁鲁 | 一二三四社区在线中文视频 | 日本大乳高潮视频在线观看 | 国产精品久久国产三级国 | 久久99精品久久久久婷婷 | 无码人妻出轨黑人中文字幕 | 国产精品嫩草久久久久 | 国产日产欧产精品精品app | 亚洲а∨天堂久久精品2021 | 午夜无码人妻av大片色欲 | 亚洲成av人在线观看网址 | 少妇无码一区二区二三区 | 久久精品中文闷骚内射 | 国产无套粉嫩白浆在线 | 精品偷拍一区二区三区在线看 | 欧美日韩综合一区二区三区 | 日韩欧美成人免费观看 | 日本精品久久久久中文字幕 | 色综合久久久久综合一本到桃花网 | 久久午夜无码鲁丝片秋霞 | 国产莉萝无码av在线播放 | 澳门永久av免费网站 | 欧美丰满少妇xxxx性 | 国产在线无码精品电影网 | 少妇激情av一区二区 | 亚洲狠狠色丁香婷婷综合 | 精品无人国产偷自产在线 | 日日干夜夜干 | 国产精品免费大片 | 日韩欧美中文字幕在线三区 | 成人无码视频在线观看网站 | 亚洲综合在线一区二区三区 | 夜精品a片一区二区三区无码白浆 | 日本熟妇大屁股人妻 | 欧美大屁股xxxxhd黑色 | 人人澡人人妻人人爽人人蜜桃 | 在线亚洲高清揄拍自拍一品区 | 国产肉丝袜在线观看 | 亚洲另类伦春色综合小说 | 国产精品久久久久久亚洲影视内衣 | 久久aⅴ免费观看 | 天天综合网天天综合色 | 一区二区三区高清视频一 | 国产精品香蕉在线观看 | 午夜福利电影 | 爽爽影院免费观看 | 亚洲色欲色欲欲www在线 | 国产欧美精品一区二区三区 | 久精品国产欧美亚洲色aⅴ大片 | 亚洲成av人在线观看网址 | 内射老妇bbwx0c0ck | 兔费看少妇性l交大片免费 | 图片区 小说区 区 亚洲五月 | 国产精品人人妻人人爽 | 久久久国产精品无码免费专区 | 久久亚洲国产成人精品性色 | 99久久亚洲精品无码毛片 | www国产亚洲精品久久久日本 | 婷婷色婷婷开心五月四房播播 | 国产福利视频一区二区 | 人妻体内射精一区二区三四 | 中文久久乱码一区二区 | 男女作爱免费网站 | 国产精品美女久久久 | 奇米影视7777久久精品 | 亚洲日韩一区二区三区 | 亚洲va中文字幕无码久久不卡 | 人妻与老人中文字幕 | 久久久精品国产sm最大网站 | 色综合视频一区二区三区 | 丰满人妻被黑人猛烈进入 | 亚洲综合伊人久久大杳蕉 | 久久亚洲精品中文字幕无男同 | 欧美猛少妇色xxxxx | 国产口爆吞精在线视频 | 97夜夜澡人人爽人人喊中国片 | 无码人妻黑人中文字幕 | 国产香蕉尹人视频在线 | 水蜜桃av无码 | 久久人人爽人人人人片 | 中文字幕av伊人av无码av | 无码一区二区三区在线观看 | 亚洲日韩av一区二区三区中文 | 亚洲精品一区三区三区在线观看 | 中文字幕+乱码+中文字幕一区 | 国内精品人妻无码久久久影院蜜桃 | 捆绑白丝粉色jk震动捧喷白浆 | 成人片黄网站色大片免费观看 | 亚洲一区二区三区播放 | 国产精品第一区揄拍无码 | 国产日产欧产精品精品app | 亚洲日韩av片在线观看 | 色综合久久久无码中文字幕 | 波多野结衣av在线观看 | 欧美xxxxx精品 | 青青草原综合久久大伊人精品 | 午夜熟女插插xx免费视频 | 在线观看国产一区二区三区 | 亚洲精品综合五月久久小说 | 日本大乳高潮视频在线观看 | 国产又爽又黄又刺激的视频 | 日韩人妻无码中文字幕视频 | 国产97人人超碰caoprom | 亚洲一区二区三区香蕉 | 野外少妇愉情中文字幕 | 国产精品99久久精品爆乳 | 亚洲第一网站男人都懂 | 国产精品久久久久无码av色戒 | 国产精品永久免费视频 | 亚洲区欧美区综合区自拍区 | 乱人伦中文视频在线观看 | 国产精品丝袜黑色高跟鞋 | 亚洲综合无码一区二区三区 | 中文字幕乱码人妻无码久久 | 全球成人中文在线 | 国产美女极度色诱视频www | 久久99精品国产麻豆蜜芽 | 天堂久久天堂av色综合 | 国产激情一区二区三区 | 影音先锋中文字幕无码 | 中文字幕无码av波多野吉衣 | 国产真实夫妇视频 | 一本大道久久东京热无码av | 亚洲精品一区二区三区婷婷月 | 久热国产vs视频在线观看 | 欧美变态另类xxxx | 亚洲精品中文字幕乱码 | 秋霞成人午夜鲁丝一区二区三区 | 人人妻人人澡人人爽人人精品浪潮 | 风流少妇按摩来高潮 | 久久综合色之久久综合 | 国产特级毛片aaaaaa高潮流水 | 午夜性刺激在线视频免费 | 熟女少妇在线视频播放 | 高潮毛片无遮挡高清免费视频 | 色婷婷久久一区二区三区麻豆 | 精品欧洲av无码一区二区三区 | 亚洲精品国产a久久久久久 | 国产成人久久精品流白浆 | 久久精品女人的天堂av | 东京一本一道一二三区 | 久久综合给久久狠狠97色 | 久久zyz资源站无码中文动漫 | 亚洲精品国产精品乱码不卡 | 久久国产精品萌白酱免费 | 日日碰狠狠丁香久燥 | 欧美成人高清在线播放 | 国产性生交xxxxx无码 | 国产精品久久久一区二区三区 | 思思久久99热只有频精品66 | 日日碰狠狠躁久久躁蜜桃 | 国产成人亚洲综合无码 | 国产人妖乱国产精品人妖 | 岛国片人妻三上悠亚 | 欧美精品无码一区二区三区 | 成 人影片 免费观看 | 婷婷色婷婷开心五月四房播播 | 在线观看欧美一区二区三区 | 97资源共享在线视频 | 中文字幕乱妇无码av在线 | 国产精品久久久一区二区三区 | 欧美日韩一区二区免费视频 | 国产九九九九九九九a片 | 伊人久久婷婷五月综合97色 | 暴力强奷在线播放无码 | 乱码午夜-极国产极内射 | 99国产精品白浆在线观看免费 | 久久www免费人成人片 | 正在播放东北夫妻内射 | 久久亚洲国产成人精品性色 | 亚洲日本一区二区三区在线 | 国产又爽又猛又粗的视频a片 | 亚洲精品鲁一鲁一区二区三区 | 性欧美疯狂xxxxbbbb | 天天躁日日躁狠狠躁免费麻豆 | 亚洲精品午夜无码电影网 | 丝袜足控一区二区三区 | 麻豆精品国产精华精华液好用吗 | 中文亚洲成a人片在线观看 | 国产午夜福利100集发布 | 亚洲狠狠婷婷综合久久 | 性色欲网站人妻丰满中文久久不卡 | 久久精品国产99久久6动漫 | 欧美丰满老熟妇xxxxx性 | 国产精品久久国产三级国 | 99re在线播放 | 日韩在线不卡免费视频一区 | 亚洲综合在线一区二区三区 | 午夜精品久久久久久久久 | 天天躁日日躁狠狠躁免费麻豆 | 久久国产自偷自偷免费一区调 | 久久综合给合久久狠狠狠97色 | 在线欧美精品一区二区三区 | 亚洲理论电影在线观看 | 少妇人妻大乳在线视频 | 色综合久久久久综合一本到桃花网 | 中文字幕色婷婷在线视频 | 国内少妇偷人精品视频免费 | 中国女人内谢69xxxx | 丰满人妻精品国产99aⅴ | 精品亚洲韩国一区二区三区 | 国产99久久精品一区二区 | 午夜时刻免费入口 | 99久久人妻精品免费一区 | 久久精品丝袜高跟鞋 | 亚洲成熟女人毛毛耸耸多 | 成年美女黄网站色大免费全看 | 精品国产成人一区二区三区 | 午夜精品一区二区三区的区别 | 成人欧美一区二区三区黑人免费 | 久久午夜无码鲁丝片 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 内射后入在线观看一区 | 亚洲国产高清在线观看视频 | 久久精品女人天堂av免费观看 | 漂亮人妻洗澡被公强 日日躁 | 精品国产av色一区二区深夜久久 | 日本www一道久久久免费榴莲 | 国产成人精品一区二区在线小狼 | 国产人妻人伦精品1国产丝袜 | 欧美精品一区二区精品久久 | 国内少妇偷人精品视频免费 | 中文无码精品a∨在线观看不卡 | 18无码粉嫩小泬无套在线观看 | 久久综合久久自在自线精品自 | 性做久久久久久久免费看 | 国产精品人人爽人人做我的可爱 | 性欧美videos高清精品 | 国产人妻人伦精品 | 国精品人妻无码一区二区三区蜜柚 | 国产精品毛多多水多 | 午夜福利不卡在线视频 | 在线观看欧美一区二区三区 | 国产色xx群视频射精 | 久久久亚洲欧洲日产国码αv | 大屁股大乳丰满人妻 | 粉嫩少妇内射浓精videos | 狠狠色丁香久久婷婷综合五月 | 18黄暴禁片在线观看 | 午夜嘿嘿嘿影院 | 国产内射老熟女aaaa | 色一情一乱一伦一区二区三欧美 | 午夜精品一区二区三区在线观看 | 成人欧美一区二区三区黑人 | 欧美精品无码一区二区三区 | 欧美激情综合亚洲一二区 | 日日夜夜撸啊撸 | 亚洲熟女一区二区三区 | 久久午夜无码鲁丝片午夜精品 | 久在线观看福利视频 | a国产一区二区免费入口 | 国产精品多人p群无码 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 亚洲精品一区二区三区大桥未久 | 国产猛烈高潮尖叫视频免费 | 无码一区二区三区在线 | 亚洲午夜福利在线观看 | 老熟女重囗味hdxx69 | 久久精品女人的天堂av | 国产乱子伦视频在线播放 | 樱花草在线播放免费中文 | 成人免费视频在线观看 | 樱花草在线播放免费中文 | 亚洲精品成人av在线 | 欧美老妇交乱视频在线观看 | 婷婷五月综合激情中文字幕 | 国产偷自视频区视频 | 欧美日本免费一区二区三区 | 欧美 丝袜 自拍 制服 另类 | 日本熟妇大屁股人妻 | 国产日产欧产精品精品app | 最近免费中文字幕中文高清百度 | 99riav国产精品视频 | 国产办公室秘书无码精品99 | 日本乱偷人妻中文字幕 | 久热国产vs视频在线观看 | 亚洲欧洲日本综合aⅴ在线 | 国产香蕉尹人综合在线观看 | 亚洲综合色区中文字幕 | 亚洲精品国偷拍自产在线麻豆 | 国产成人无码av片在线观看不卡 | 亚洲中文字幕无码一久久区 | 沈阳熟女露脸对白视频 | 麻豆人妻少妇精品无码专区 | 亚洲精品国产精品乱码视色 | 无码国产乱人伦偷精品视频 | av无码不卡在线观看免费 | 国产亚洲tv在线观看 | 亚洲欧美国产精品专区久久 | 99久久无码一区人妻 | 妺妺窝人体色www婷婷 | 漂亮人妻洗澡被公强 日日躁 | 人人妻人人澡人人爽人人精品 | 国产亚洲tv在线观看 | 欧美丰满老熟妇xxxxx性 | 乌克兰少妇性做爰 | 伊人色综合久久天天小片 | а√资源新版在线天堂 | 任你躁国产自任一区二区三区 | 色老头在线一区二区三区 | 国产精品亚洲а∨无码播放麻豆 | 中文字幕乱码人妻无码久久 | 日本大乳高潮视频在线观看 | 福利一区二区三区视频在线观看 | 强伦人妻一区二区三区视频18 | 国产肉丝袜在线观看 | 久久久www成人免费毛片 | 国产成人亚洲综合无码 | 久久这里只有精品视频9 | 国产成人精品三级麻豆 | 欧美日本精品一区二区三区 | 一区二区传媒有限公司 | 精品无码国产自产拍在线观看蜜 | 熟女俱乐部五十路六十路av | 无码av免费一区二区三区试看 | 丁香花在线影院观看在线播放 | 国产婷婷色一区二区三区在线 | 国产特级毛片aaaaaa高潮流水 | 性欧美大战久久久久久久 | 精品人妻中文字幕有码在线 | 亚洲日本va午夜在线电影 | 国产亚洲精品久久久久久大师 | 天天爽夜夜爽夜夜爽 | 麻豆md0077饥渴少妇 | 少妇的肉体aa片免费 | 老太婆性杂交欧美肥老太 | 欧美亚洲国产一区二区三区 | 色 综合 欧美 亚洲 国产 | 性欧美牲交xxxxx视频 | 中文字幕人妻无码一夲道 | 国产一区二区三区影院 | 国产一区二区三区日韩精品 | 国模大胆一区二区三区 | 国产在线精品一区二区高清不卡 | av小次郎收藏 | 亚洲日韩精品欧美一区二区 | 67194成是人免费无码 | 黄网在线观看免费网站 | 国产乱码精品一品二品 | 国产精品久久久久无码av色戒 | 黑人巨大精品欧美黑寡妇 | 成 人 网 站国产免费观看 | 国产猛烈高潮尖叫视频免费 | 1000部啪啪未满十八勿入下载 | 久久精品99久久香蕉国产色戒 | 狂野欧美激情性xxxx | 国产真实伦对白全集 | 国产午夜精品一区二区三区嫩草 | 乱码午夜-极国产极内射 | 成人一在线视频日韩国产 | 亚洲另类伦春色综合小说 | 亚洲精品国产精品乱码视色 | 久久综合久久自在自线精品自 | 思思久久99热只有频精品66 | 亚洲 日韩 欧美 成人 在线观看 | 夜夜高潮次次欢爽av女 | 双乳奶水饱满少妇呻吟 | 成人欧美一区二区三区 | 国产午夜精品一区二区三区嫩草 | 青青草原综合久久大伊人精品 | 国产成人精品视频ⅴa片软件竹菊 | 好男人www社区 | 中文无码成人免费视频在线观看 | 色一情一乱一伦一区二区三欧美 | 人人妻人人澡人人爽欧美精品 | 九月婷婷人人澡人人添人人爽 | 妺妺窝人体色www在线小说 | 久久久www成人免费毛片 | 狠狠综合久久久久综合网 | 蜜臀av在线播放 久久综合激激的五月天 | 乱人伦中文视频在线观看 | 妺妺窝人体色www在线小说 | 国内精品久久毛片一区二区 | 欧美熟妇另类久久久久久多毛 | 国产美女精品一区二区三区 | 精品国产一区二区三区四区在线看 | 欧美日韩精品 | 国产艳妇av在线观看果冻传媒 | 欧美高清在线精品一区 | 亚洲成a人片在线观看日本 | 丰满人妻翻云覆雨呻吟视频 | 夜夜夜高潮夜夜爽夜夜爰爰 | 少妇被黑人到高潮喷出白浆 | 亚洲人成网站在线播放942 | 亚洲乱亚洲乱妇50p | 人妻体内射精一区二区三四 | 欧美老人巨大xxxx做受 | 性生交大片免费看l | 300部国产真实乱 | 激情内射亚州一区二区三区爱妻 | 水蜜桃色314在线观看 | 久久国产精品偷任你爽任你 | 午夜福利一区二区三区在线观看 | 波多野结衣 黑人 | 在线播放免费人成毛片乱码 | 内射爽无广熟女亚洲 | 亚洲精品中文字幕乱码 | 亚洲自偷自偷在线制服 | 亚洲va中文字幕无码久久不卡 | 大地资源网第二页免费观看 | 大屁股大乳丰满人妻 | 九九在线中文字幕无码 | 久久国产精品精品国产色婷婷 | 久久97精品久久久久久久不卡 | 最近免费中文字幕中文高清百度 | 人妻无码久久精品人妻 | 国产乱人偷精品人妻a片 | 成人毛片一区二区 | yw尤物av无码国产在线观看 | 乱码av麻豆丝袜熟女系列 | 国产欧美亚洲精品a | 人妻少妇精品无码专区动漫 | 精品国产av色一区二区深夜久久 | 成 人 免费观看网站 | 亚洲精品中文字幕 | 国产精品va在线观看无码 | 欧美激情一区二区三区成人 | 宝宝好涨水快流出来免费视频 | 国产亚洲精品久久久久久久 | 国产亚洲精品久久久久久久 | 久久99精品久久久久久 | 精品人妻人人做人人爽夜夜爽 | 中文字幕人妻无码一夲道 | 久久99精品久久久久久动态图 | 色欲av亚洲一区无码少妇 | 亚无码乱人伦一区二区 | 日本饥渴人妻欲求不满 | 国产口爆吞精在线视频 | 亚洲精品综合五月久久小说 | 性欧美牲交在线视频 | 国产亚洲人成在线播放 | 亚洲熟妇自偷自拍另类 | 中文字幕色婷婷在线视频 | 377p欧洲日本亚洲大胆 | 疯狂三人交性欧美 | 精品成人av一区二区三区 | 粗大的内捧猛烈进出视频 | 狂野欧美性猛交免费视频 | 久久久久人妻一区精品色欧美 | 天堂无码人妻精品一区二区三区 | 丁香啪啪综合成人亚洲 | 久久久久国色av免费观看性色 | 国产两女互慰高潮视频在线观看 | 亚洲欧洲无卡二区视頻 | 狠狠亚洲超碰狼人久久 | 欧美乱妇无乱码大黄a片 | 丰满妇女强制高潮18xxxx | 国产成人无码一二三区视频 | 人人爽人人澡人人人妻 | 久久精品国产99精品亚洲 | 久久精品一区二区三区四区 | 在线观看免费人成视频 | 欧美激情一区二区三区成人 | 国产精品久久久久久亚洲毛片 | 国产sm调教视频在线观看 | 一本久久a久久精品亚洲 | 亚洲精品国产品国语在线观看 | 欧美国产日韩久久mv | 人妻中文无码久热丝袜 | 亚洲精品国产精品乱码不卡 | 亚洲熟妇色xxxxx欧美老妇y | 国产亚洲人成a在线v网站 | 在线播放免费人成毛片乱码 | 天天拍夜夜添久久精品大 | 成人无码视频免费播放 | 天海翼激烈高潮到腰振不止 | 亚洲综合在线一区二区三区 | 国产suv精品一区二区五 | 日韩欧美群交p片內射中文 | 99国产精品白浆在线观看免费 | 免费乱码人妻系列无码专区 | а天堂中文在线官网 | 2020久久超碰国产精品最新 | 久久久久久九九精品久 | 精品国偷自产在线视频 | 噜噜噜亚洲色成人网站 | 精品无码成人片一区二区98 | 99久久精品日本一区二区免费 | 女人被爽到呻吟gif动态图视看 | 99精品视频在线观看免费 | 露脸叫床粗话东北少妇 | 国产成人精品一区二区在线小狼 | 极品尤物被啪到呻吟喷水 | 东北女人啪啪对白 | 国产又粗又硬又大爽黄老大爷视 | 国产性生大片免费观看性 | 久久人人爽人人爽人人片ⅴ | 午夜无码区在线观看 | 18黄暴禁片在线观看 | 国产美女极度色诱视频www | 丝袜足控一区二区三区 | 青春草在线视频免费观看 | 无码人妻丰满熟妇区毛片18 | 亚洲一区二区三区含羞草 | 日韩成人一区二区三区在线观看 | 国产成人午夜福利在线播放 | 精品亚洲韩国一区二区三区 | 荫蒂被男人添的好舒服爽免费视频 | 狠狠色噜噜狠狠狠7777奇米 | 国内少妇偷人精品视频免费 | 成人性做爰aaa片免费看 | 欧美性猛交内射兽交老熟妇 | 国产深夜福利视频在线 | 中文字幕久久久久人妻 | 亚洲精品国偷拍自产在线麻豆 | 精品国精品国产自在久国产87 | aa片在线观看视频在线播放 | 日韩欧美群交p片內射中文 | 欧美 日韩 亚洲 在线 | 午夜成人1000部免费视频 | 精品亚洲韩国一区二区三区 | 亚洲国产欧美日韩精品一区二区三区 | 高中生自慰www网站 | 国产亚洲精品久久久ai换 | 亚洲综合在线一区二区三区 | 综合人妻久久一区二区精品 | 在线精品亚洲一区二区 | 国产精品久久久午夜夜伦鲁鲁 | 久久久久久久女国产乱让韩 | 国产亚洲视频中文字幕97精品 | 一本大道伊人av久久综合 | 国产人妻大战黑人第1集 | 最新版天堂资源中文官网 | 中文字幕 亚洲精品 第1页 | 久久99国产综合精品 | 中文字幕无码av波多野吉衣 | 久精品国产欧美亚洲色aⅴ大片 | 初尝人妻少妇中文字幕 | 国产亚洲欧美在线专区 | 国产人妻人伦精品1国产丝袜 | 亚洲狠狠婷婷综合久久 | 窝窝午夜理论片影院 | 国产激情艳情在线看视频 | 亚洲精品一区二区三区四区五区 | 亚洲国产午夜精品理论片 | 水蜜桃亚洲一二三四在线 | 四虎影视成人永久免费观看视频 | 97夜夜澡人人爽人人喊中国片 | 在线天堂新版最新版在线8 | 又紧又大又爽精品一区二区 | 激情国产av做激情国产爱 | 日本xxxx色视频在线观看免费 | 亚洲中文字幕在线无码一区二区 | 国产一区二区三区影院 | 疯狂三人交性欧美 | 久久久久亚洲精品男人的天堂 | 色情久久久av熟女人妻网站 | 无码成人精品区在线观看 | 自拍偷自拍亚洲精品被多人伦好爽 | 中文毛片无遮挡高清免费 | 一个人免费观看的www视频 | 亚洲精品国偷拍自产在线观看蜜桃 | 亚洲色在线无码国产精品不卡 | 性做久久久久久久免费看 | 国产亚洲精品久久久久久 | 亚洲爆乳无码专区 | 久久国产精品二国产精品 | 乌克兰少妇性做爰 | 国产一区二区三区四区五区加勒比 | 波多野结衣av一区二区全免费观看 | 中文字幕日韩精品一区二区三区 | 国产精品久久久久久久9999 | 在线观看欧美一区二区三区 | 亚洲成色在线综合网站 | 日本护士xxxxhd少妇 | 日本一区二区三区免费高清 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 国产色视频一区二区三区 | 国产9 9在线 | 中文 | 精品国偷自产在线 | 国产成人综合美国十次 | 97久久精品无码一区二区 | aⅴ亚洲 日韩 色 图网站 播放 | 无码纯肉视频在线观看 | 国产黄在线观看免费观看不卡 | 中文字幕人妻无码一区二区三区 | 亚洲精品鲁一鲁一区二区三区 | 老熟女乱子伦 | 午夜男女很黄的视频 | 老司机亚洲精品影院无码 | 久久这里只有精品视频9 | 精品 日韩 国产 欧美 视频 | 又黄又爽又色的视频 | 欧美大屁股xxxxhd黑色 | 国产超碰人人爽人人做人人添 | 国产精品亚洲а∨无码播放麻豆 | 岛国片人妻三上悠亚 | 丰满人妻一区二区三区免费视频 | 美女极度色诱视频国产 | 一本久道久久综合狠狠爱 | 2019nv天堂香蕉在线观看 | 老熟女重囗味hdxx69 | 欧美日韩久久久精品a片 | 亚洲 另类 在线 欧美 制服 | 中文无码精品a∨在线观看不卡 | 国产精品亚洲专区无码不卡 | 丰满少妇人妻久久久久久 | 一二三四社区在线中文视频 | 成人精品视频一区二区三区尤物 | 中文字幕人妻无码一区二区三区 | 久久精品国产日本波多野结衣 | 无码福利日韩神码福利片 | 5858s亚洲色大成网站www | 女人被爽到呻吟gif动态图视看 | 中文字幕乱妇无码av在线 | 最新国产乱人伦偷精品免费网站 | 国产激情综合五月久久 | 欧美色就是色 | 丁香花在线影院观看在线播放 | 成熟妇人a片免费看网站 | 国产精品鲁鲁鲁 | 久久精品中文字幕一区 | 成人综合网亚洲伊人 | 久久精品国产亚洲精品 | 国产精品美女久久久 | 午夜嘿嘿嘿影院 | 18无码粉嫩小泬无套在线观看 | 日本高清一区免费中文视频 | 亚洲欧美日韩综合久久久 | 国产精品久久久久影院嫩草 | 日欧一片内射va在线影院 | 国产另类ts人妖一区二区 | 亚洲男人av香蕉爽爽爽爽 | 四虎国产精品一区二区 | 一区二区三区乱码在线 | 欧洲 | 亚洲爆乳大丰满无码专区 | 成人三级无码视频在线观看 | 白嫩日本少妇做爰 | 久久亚洲精品中文字幕无男同 | 成人女人看片免费视频放人 | 无码av中文字幕免费放 | 人妻少妇被猛烈进入中文字幕 | 亚洲熟女一区二区三区 | 天天摸天天碰天天添 | 久久99精品久久久久久 | 亚洲中文字幕无码中字 | 久青草影院在线观看国产 | 欧美放荡的少妇 | 1000部啪啪未满十八勿入下载 | 国产黄在线观看免费观看不卡 | 麻豆蜜桃av蜜臀av色欲av | 欧美刺激性大交 | 欧美 日韩 人妻 高清 中文 | 久久精品国产大片免费观看 | √天堂资源地址中文在线 | 兔费看少妇性l交大片免费 | 久久无码专区国产精品s | 亚洲无人区一区二区三区 | 国产色视频一区二区三区 | 人人妻人人澡人人爽精品欧美 | 精品无码国产自产拍在线观看蜜 | 国产人妻精品一区二区三区不卡 | 久久精品99久久香蕉国产色戒 | 天天爽夜夜爽夜夜爽 | 亚洲男人av香蕉爽爽爽爽 | 内射爽无广熟女亚洲 | 亚洲欧美色中文字幕在线 | 日本饥渴人妻欲求不满 | 国产成人精品必看 | 国产精品毛多多水多 | 国产精品久久久午夜夜伦鲁鲁 | 老子影院午夜伦不卡 | 久久久国产精品无码免费专区 | 中文字幕 人妻熟女 | 色一情一乱一伦一视频免费看 | 亚洲无人区午夜福利码高清完整版 | 国产精品视频免费播放 | 桃花色综合影院 | 午夜精品久久久内射近拍高清 | 亚无码乱人伦一区二区 | 国产精品无码成人午夜电影 | 国产成人精品视频ⅴa片软件竹菊 | 福利一区二区三区视频在线观看 | 色婷婷综合中文久久一本 | 97久久精品无码一区二区 | 一本色道久久综合亚洲精品不卡 | 国产麻豆精品精东影业av网站 | 色婷婷av一区二区三区之红樱桃 | 午夜福利不卡在线视频 | 久久综合狠狠综合久久综合88 | 久久久久久久久蜜桃 | 强开小婷嫩苞又嫩又紧视频 | 亚洲国产精品无码久久久久高潮 | 最近中文2019字幕第二页 | 内射欧美老妇wbb | 又大又硬又黄的免费视频 | 成人综合网亚洲伊人 | 免费观看的无遮挡av | 无遮挡啪啪摇乳动态图 | 中文字幕乱码中文乱码51精品 | 内射欧美老妇wbb | 岛国片人妻三上悠亚 | 色综合久久久无码网中文 | 国内综合精品午夜久久资源 | 中文字幕无码人妻少妇免费 | 国产精品美女久久久久av爽李琼 | 国产手机在线αⅴ片无码观看 | 欧美35页视频在线观看 | 成人无码视频在线观看网站 | 免费视频欧美无人区码 | yw尤物av无码国产在线观看 | 国产情侣作爱视频免费观看 | 日韩人妻系列无码专区 | 亚洲日韩乱码中文无码蜜桃臀网站 | 精品久久久久久人妻无码中文字幕 | 麻豆国产人妻欲求不满谁演的 | 色综合久久久无码网中文 | 九九久久精品国产免费看小说 | 国产欧美亚洲精品a | 欧美亚洲日韩国产人成在线播放 | 少妇太爽了在线观看 | 麻豆国产丝袜白领秘书在线观看 | 欧美 丝袜 自拍 制服 另类 | 精品国产国产综合精品 | 日本一卡2卡3卡四卡精品网站 | 东京一本一道一二三区 | 亚洲欧美精品伊人久久 | 人人澡人人妻人人爽人人蜜桃 | 又色又爽又黄的美女裸体网站 | 久久精品人妻少妇一区二区三区 | 蜜桃无码一区二区三区 | 97无码免费人妻超级碰碰夜夜 | 捆绑白丝粉色jk震动捧喷白浆 | 国产成人精品久久亚洲高清不卡 | 性色av无码免费一区二区三区 | 国产精品美女久久久久av爽李琼 | 国内少妇偷人精品视频免费 | 久久亚洲精品中文字幕无男同 | 欧美国产日产一区二区 | 精品国产成人一区二区三区 | 国产精品无码永久免费888 | 久久99精品久久久久婷婷 | 麻豆蜜桃av蜜臀av色欲av | 中文字幕无码av激情不卡 | 波多野结衣 黑人 | 小sao货水好多真紧h无码视频 | 88国产精品欧美一区二区三区 | 国产又粗又硬又大爽黄老大爷视 | 久久久www成人免费毛片 | 欧美老人巨大xxxx做受 | 国产99久久精品一区二区 | 国产午夜手机精彩视频 | 少妇高潮喷潮久久久影院 | 国产无遮挡又黄又爽免费视频 | 性色av无码免费一区二区三区 | 三级4级全黄60分钟 | 天天爽夜夜爽夜夜爽 | 国产精品无套呻吟在线 | 国产精品自产拍在线观看 | 午夜成人1000部免费视频 | 久久熟妇人妻午夜寂寞影院 | 午夜时刻免费入口 | 亚洲中文字幕乱码av波多ji | 久久国产36精品色熟妇 | 天下第一社区视频www日本 | 任你躁在线精品免费 | 亚洲男人av天堂午夜在 | 亚洲精品中文字幕久久久久 | 玩弄人妻少妇500系列视频 | 国产成人综合色在线观看网站 | 狠狠cao日日穞夜夜穞av | 亚洲国产精品美女久久久久 | 丁香花在线影院观看在线播放 | 国产真实乱对白精彩久久 | 九九久久精品国产免费看小说 | av无码不卡在线观看免费 | 欧美性猛交内射兽交老熟妇 | 青草视频在线播放 | 亚洲小说春色综合另类 | 67194成是人免费无码 | 国产真实乱对白精彩久久 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 亚洲国产精品久久人人爱 | 欧美xxxxx精品 | 黑人巨大精品欧美黑寡妇 | 国产亚洲精品久久久久久国模美 | 国产99久久精品一区二区 | 亚洲国产欧美日韩精品一区二区三区 | 精品成人av一区二区三区 | 99re在线播放 | 亚洲爆乳大丰满无码专区 | 无码av免费一区二区三区试看 | 色婷婷久久一区二区三区麻豆 | 亚洲一区二区三区国产精华液 | 亚洲自偷自拍另类第1页 | 国产精品鲁鲁鲁 | 伊人色综合久久天天小片 | 丰满护士巨好爽好大乳 | 中文字幕无码热在线视频 | 久久人妻内射无码一区三区 | 性欧美牲交xxxxx视频 | 一本大道久久东京热无码av | 女人色极品影院 | 国产精品亚洲一区二区三区喷水 | 55夜色66夜色国产精品视频 | 久久天天躁狠狠躁夜夜免费观看 | 欧美一区二区三区视频在线观看 | 国产欧美精品一区二区三区 | 欧美日韩综合一区二区三区 | 捆绑白丝粉色jk震动捧喷白浆 | 日本成熟视频免费视频 | 久久久久99精品成人片 | 初尝人妻少妇中文字幕 | 男人和女人高潮免费网站 | 精品无码国产自产拍在线观看蜜 | 亚洲精品鲁一鲁一区二区三区 | 真人与拘做受免费视频 | 国产亚洲精品精品国产亚洲综合 | 97久久超碰中文字幕 | 国产亲子乱弄免费视频 | 成人试看120秒体验区 | 国产69精品久久久久app下载 | 成人一在线视频日韩国产 | 麻豆精品国产精华精华液好用吗 | 女人被男人爽到呻吟的视频 | 中文精品久久久久人妻不卡 | 国产免费久久精品国产传媒 | 国产人妻精品一区二区三区不卡 | 中文字幕无码视频专区 | 纯爱无遮挡h肉动漫在线播放 | 欧美激情内射喷水高潮 | 欧美一区二区三区视频在线观看 | 综合网日日天干夜夜久久 | 日本欧美一区二区三区乱码 | 日韩欧美成人免费观看 | 人妻与老人中文字幕 | 国产精品久久福利网站 | 日日摸天天摸爽爽狠狠97 | 国产精品毛多多水多 | 亚洲一区二区三区国产精华液 | 成熟妇人a片免费看网站 | 国产va免费精品观看 | 亚洲理论电影在线观看 | av无码电影一区二区三区 | 日韩精品久久久肉伦网站 | 久久国产劲爆∧v内射 | 人妻少妇被猛烈进入中文字幕 | 狠狠cao日日穞夜夜穞av | 久久午夜夜伦鲁鲁片无码免费 | 国产超碰人人爽人人做人人添 | 丰满人妻被黑人猛烈进入 | 天天摸天天透天天添 | 在线观看国产午夜福利片 | 性做久久久久久久久 | 色婷婷久久一区二区三区麻豆 | 无码国产乱人伦偷精品视频 | 亚洲色偷偷男人的天堂 | 好男人社区资源 | 国产成人无码a区在线观看视频app | 久久综合九色综合97网 | 无码人妻丰满熟妇区毛片18 | 欧美丰满少妇xxxx性 | 无遮挡国产高潮视频免费观看 | 国产小呦泬泬99精品 | 人人妻人人澡人人爽人人精品 | 亚洲国产精品无码久久久久高潮 | 无码毛片视频一区二区本码 | av香港经典三级级 在线 | 真人与拘做受免费视频 | 激情人妻另类人妻伦 | 中文字幕 亚洲精品 第1页 | 东京热男人av天堂 | 欧美丰满熟妇xxxx性ppx人交 | 狠狠色噜噜狠狠狠狠7777米奇 | 51国偷自产一区二区三区 | 亚洲欧美日韩成人高清在线一区 | 欧美丰满熟妇xxxx | 国产亚洲视频中文字幕97精品 | 帮老师解开蕾丝奶罩吸乳网站 | 国产亚洲精品精品国产亚洲综合 | 九一九色国产 | 真人与拘做受免费视频一 | 狂野欧美性猛xxxx乱大交 | 国内揄拍国内精品少妇国语 | 欧美日韩一区二区三区自拍 | 国产亚洲精品久久久久久久久动漫 | 亚洲日韩乱码中文无码蜜桃臀网站 | 亚洲熟妇色xxxxx欧美老妇 | 亚洲色大成网站www国产 | 免费看男女做好爽好硬视频 | 亚洲人成网站在线播放942 | 亚洲乱码中文字幕在线 | 亚洲欧美中文字幕5发布 | 伦伦影院午夜理论片 | 成人影院yy111111在线观看 | 国内精品久久毛片一区二区 | 国产精品久久久久久亚洲毛片 | 国产精品国产三级国产专播 | 色婷婷综合激情综在线播放 | 国产 浪潮av性色四虎 | 丰满少妇弄高潮了www | 久久精品视频在线看15 | 在线观看国产午夜福利片 | 偷窥日本少妇撒尿chinese | 国产人妻精品一区二区三区 | 粉嫩少妇内射浓精videos | 精品国产一区二区三区四区 | 亚洲男人av天堂午夜在 | 全球成人中文在线 | 国产精品久久福利网站 | 国产农村乱对白刺激视频 | 精品午夜福利在线观看 | 无套内谢的新婚少妇国语播放 | 18无码粉嫩小泬无套在线观看 | 国产香蕉尹人视频在线 | 国产精品国产自线拍免费软件 | 亚洲精品综合五月久久小说 | 亚洲第一无码av无码专区 | 亚洲爆乳精品无码一区二区三区 | 2020久久香蕉国产线看观看 | 中文字幕无码热在线视频 | 午夜免费福利小电影 | 日欧一片内射va在线影院 | 丰满人妻翻云覆雨呻吟视频 | 国产一区二区三区精品视频 | 国产人妻人伦精品 | 色婷婷av一区二区三区之红樱桃 | 国产一区二区三区四区五区加勒比 | 欧美三级不卡在线观看 | 波多野结衣一区二区三区av免费 | 国产电影无码午夜在线播放 | 中文字幕+乱码+中文字幕一区 | 精品久久久久久人妻无码中文字幕 | 亚洲熟妇自偷自拍另类 | 香蕉久久久久久av成人 | 国产亚洲精品久久久久久大师 | 4hu四虎永久在线观看 | 成人动漫在线观看 | 婷婷丁香五月天综合东京热 | 久久久久久亚洲精品a片成人 | 国产特级毛片aaaaaa高潮流水 | 日本护士毛茸茸高潮 | 亚洲中文字幕乱码av波多ji | 人妻无码久久精品人妻 | 性做久久久久久久久 | 99久久精品日本一区二区免费 | 成熟女人特级毛片www免费 | 国产人妻久久精品二区三区老狼 | 国产精品高潮呻吟av久久4虎 | 日韩精品a片一区二区三区妖精 | 欧美性生交活xxxxxdddd | 色 综合 欧美 亚洲 国产 | 亚洲综合无码一区二区三区 | 曰韩少妇内射免费播放 | 人人爽人人爽人人片av亚洲 | 欧美猛少妇色xxxxx | 亚洲国产精品美女久久久久 | 欧美35页视频在线观看 | 曰韩少妇内射免费播放 | a片在线免费观看 | 国产艳妇av在线观看果冻传媒 | 99精品无人区乱码1区2区3区 | 久久国产精品二国产精品 | 国色天香社区在线视频 | 国产农村妇女高潮大叫 | 最近的中文字幕在线看视频 | 粉嫩少妇内射浓精videos | 亚无码乱人伦一区二区 | 欧美人与禽猛交狂配 | 在线精品国产一区二区三区 | 伊人久久婷婷五月综合97色 | 精品国产一区二区三区四区 | 久久久久成人精品免费播放动漫 | 色综合久久久久综合一本到桃花网 | 久久99国产综合精品 | 激情国产av做激情国产爱 | 色欲综合久久中文字幕网 | 天下第一社区视频www日本 | 漂亮人妻洗澡被公强 日日躁 | 久久亚洲国产成人精品性色 | 欧美国产亚洲日韩在线二区 | 国产两女互慰高潮视频在线观看 | 又粗又大又硬毛片免费看 | 欧美xxxx黑人又粗又长 | 国产av人人夜夜澡人人爽麻豆 | 国内综合精品午夜久久资源 | 色窝窝无码一区二区三区色欲 | 无码人中文字幕 | 人人妻人人澡人人爽欧美一区 | 中文字幕av无码一区二区三区电影 | 国产精品99久久精品爆乳 | v一区无码内射国产 | 日韩精品无码免费一区二区三区 | 国产精品久久久 | 99久久精品午夜一区二区 | 麻豆国产人妻欲求不满谁演的 | 亚洲狠狠婷婷综合久久 | 给我免费的视频在线观看 | 双乳奶水饱满少妇呻吟 | 国产偷国产偷精品高清尤物 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 日本丰满熟妇videos | 永久免费观看美女裸体的网站 | 久久久久亚洲精品中文字幕 | 丰腴饱满的极品熟妇 | 色偷偷人人澡人人爽人人模 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 中文字幕av日韩精品一区二区 | 国产三级精品三级男人的天堂 | 久久久亚洲欧洲日产国码αv | 黑森林福利视频导航 | 波多野结衣av在线观看 | 日本成熟视频免费视频 | 在线观看欧美一区二区三区 | 亚洲区欧美区综合区自拍区 | 免费中文字幕日韩欧美 | 毛片内射-百度 | 久久精品丝袜高跟鞋 | 国产精品人人爽人人做我的可爱 | 在线观看免费人成视频 | 国产免费久久精品国产传媒 | 久久亚洲a片com人成 | 扒开双腿吃奶呻吟做受视频 | 国产成人精品一区二区在线小狼 | 国产国产精品人在线视 | 亚洲a无码综合a国产av中文 | 狂野欧美性猛交免费视频 | 欧美丰满熟妇xxxx性ppx人交 | 国产精品久久精品三级 | 无码人妻丰满熟妇区五十路百度 | 国产精品无码一区二区三区不卡 | 国产香蕉尹人视频在线 | 日韩av无码一区二区三区 | 久久久久成人片免费观看蜜芽 | 国产精品久久久久久无码 | 日本va欧美va欧美va精品 | 夜先锋av资源网站 | 亚洲一区二区三区四区 | 国产成人一区二区三区在线观看 | 国产精品久久福利网站 | 日本xxxx色视频在线观看免费 | 久久精品人人做人人综合 | 无码成人精品区在线观看 | 久久zyz资源站无码中文动漫 | 亚洲中文字幕在线无码一区二区 | 国产精品久久久 | 全黄性性激高免费视频 | 又大又硬又爽免费视频 | 麻豆国产人妻欲求不满 | 日韩精品a片一区二区三区妖精 | 正在播放东北夫妻内射 | 亚洲狠狠婷婷综合久久 | 成 人 网 站国产免费观看 | 一本精品99久久精品77 | 久久精品国产99久久6动漫 | 性做久久久久久久久 | 亚洲欧美日韩国产精品一区二区 | 国产婷婷色一区二区三区在线 | 日本熟妇人妻xxxxx人hd | 99麻豆久久久国产精品免费 | 亚洲精品国偷拍自产在线麻豆 | 亚洲精品国偷拍自产在线观看蜜桃 | 亚洲国产精品久久人人爱 | 色综合久久久久综合一本到桃花网 | 亚洲熟女一区二区三区 | 人人妻人人澡人人爽欧美一区 | 亚洲の无码国产の无码步美 | 亚洲aⅴ无码成人网站国产app | 午夜精品久久久久久久久 | 两性色午夜免费视频 | 亚洲精品一区二区三区大桥未久 | 欧美性猛交xxxx富婆 | 国产肉丝袜在线观看 | 国产手机在线αⅴ片无码观看 | 国产精华av午夜在线观看 | 欧美成人免费全部网站 | а√天堂www在线天堂小说 | 日本xxxx色视频在线观看免费 | 伊人久久大香线蕉av一区二区 | 精品一区二区三区波多野结衣 | 日本爽爽爽爽爽爽在线观看免 | 久久精品国产一区二区三区肥胖 | 色爱情人网站 | 亚洲狠狠婷婷综合久久 | 超碰97人人射妻 | 男女下面进入的视频免费午夜 | 国产综合在线观看 | 国产日产欧产精品精品app | 美女扒开屁股让男人桶 | 精品无码一区二区三区爱欲 | 女人被男人爽到呻吟的视频 | 熟女少妇人妻中文字幕 | 色婷婷综合激情综在线播放 | 扒开双腿吃奶呻吟做受视频 | 国产精品久久久久无码av色戒 | 亚洲 a v无 码免 费 成 人 a v | 亚洲色无码一区二区三区 | 亚洲精品综合一区二区三区在线 | 动漫av一区二区在线观看 | 日韩av无码一区二区三区不卡 | 国产99久久精品一区二区 | 国产亚洲精品久久久久久久久动漫 | 女人被爽到呻吟gif动态图视看 | 久久久精品成人免费观看 | 国内精品一区二区三区不卡 | 亚洲 激情 小说 另类 欧美 | 国产精品久久国产精品99 | 人人超人人超碰超国产 | 亚洲精品午夜国产va久久成人 | 最新版天堂资源中文官网 | 未满成年国产在线观看 | 亚洲午夜久久久影院 | 国产成人无码av片在线观看不卡 | 图片小说视频一区二区 | 人妻人人添人妻人人爱 | 国产午夜无码精品免费看 | 狠狠色噜噜狠狠狠狠7777米奇 | 欧美肥老太牲交大战 | 国产精品丝袜黑色高跟鞋 | 精品午夜福利在线观看 | 最近的中文字幕在线看视频 | 色五月丁香五月综合五月 | 一本久久a久久精品亚洲 | 日韩精品无码一区二区中文字幕 | 国产亚洲美女精品久久久2020 | 黑人巨大精品欧美黑寡妇 | 欧美性猛交xxxx富婆 | 日韩精品无码免费一区二区三区 | 无码乱肉视频免费大全合集 | 日韩精品无码一区二区中文字幕 | 一区二区传媒有限公司 | 国产在线精品一区二区三区直播 | 亚洲乱码中文字幕在线 | 少妇厨房愉情理9仑片视频 | 久久精品国产精品国产精品污 | 精品国产青草久久久久福利 | 亚洲国产高清在线观看视频 | 欧美兽交xxxx×视频 | 一个人免费观看的www视频 | 亚洲成av人在线观看网址 | 成人无码影片精品久久久 | 日韩 欧美 动漫 国产 制服 | 久久综合网欧美色妞网 | 色综合久久中文娱乐网 | 乱人伦人妻中文字幕无码 | 亚洲成a人片在线观看无码3d | 清纯唯美经典一区二区 | 国产一区二区三区影院 | 女人被爽到呻吟gif动态图视看 | 亚洲aⅴ无码成人网站国产app | 男女超爽视频免费播放 | 黑人巨大精品欧美黑寡妇 | 无码av免费一区二区三区试看 | a片免费视频在线观看 | 亚洲欧美日韩成人高清在线一区 | 国产综合色产在线精品 | 午夜无码人妻av大片色欲 | 丰满少妇熟乱xxxxx视频 | 中文字幕无码免费久久99 | 男女下面进入的视频免费午夜 | 欧美午夜特黄aaaaaa片 | 国内精品九九久久久精品 | 欧美 日韩 人妻 高清 中文 | 国产免费无码一区二区视频 | 亚洲成a人一区二区三区 | 国产高清不卡无码视频 | 日本xxxx色视频在线观看免费 | 中文字幕+乱码+中文字幕一区 | 天下第一社区视频www日本 | 一本色道婷婷久久欧美 | 国产亚洲欧美在线专区 | 在线欧美精品一区二区三区 | 午夜免费福利小电影 | 免费观看激色视频网站 | 欧美高清在线精品一区 | 国产另类ts人妖一区二区 | 麻豆精产国品 | 一区二区三区高清视频一 | 沈阳熟女露脸对白视频 | 久久无码专区国产精品s | 男人和女人高潮免费网站 | 亚洲毛片av日韩av无码 | 无码播放一区二区三区 | 欧美 丝袜 自拍 制服 另类 | 亚洲日韩乱码中文无码蜜桃臀网站 | 人人爽人人爽人人片av亚洲 | 免费人成网站视频在线观看 | 久久国语露脸国产精品电影 | 亚洲爆乳精品无码一区二区三区 | 国产亚洲美女精品久久久2020 | 欧美成人午夜精品久久久 | 久久97精品久久久久久久不卡 | 青青草原综合久久大伊人精品 | 亚洲中文字幕无码中文字在线 | 少妇邻居内射在线 | 图片区 小说区 区 亚洲五月 | 久久午夜无码鲁丝片 | 女人被男人爽到呻吟的视频 | 中文字幕乱码亚洲无线三区 | 麻豆人妻少妇精品无码专区 | 精品欧洲av无码一区二区三区 | 久久综合狠狠综合久久综合88 | 国内精品久久毛片一区二区 | 清纯唯美经典一区二区 | 久久人人97超碰a片精品 | 亚洲成熟女人毛毛耸耸多 | 76少妇精品导航 | 亚洲最大成人网站 | 国产真实乱对白精彩久久 | 午夜性刺激在线视频免费 | 亚洲一区二区三区 | 久久精品99久久香蕉国产色戒 | 性啪啪chinese东北女人 | 天堂а√在线中文在线 | 亚洲国产精品一区二区美利坚 | 日日鲁鲁鲁夜夜爽爽狠狠 | 少妇性俱乐部纵欲狂欢电影 | 欧美日韩色另类综合 | 青草青草久热国产精品 | 国产手机在线αⅴ片无码观看 | 中文字幕乱码人妻无码久久 | 亚洲国产精品久久久久久 | 国产色视频一区二区三区 | 色综合天天综合狠狠爱 | 亚洲一区二区三区在线观看网站 | 狠狠色欧美亚洲狠狠色www | 影音先锋中文字幕无码 | 亚洲成av人综合在线观看 | 国产av无码专区亚洲awww | 久久国产精品二国产精品 | 国产亚洲精品久久久久久大师 | 少妇邻居内射在线 | 国精产品一区二区三区 | 亚洲欧美国产精品久久 | 国产性生大片免费观看性 | 狠狠躁日日躁夜夜躁2020 | 性色av无码免费一区二区三区 | 一本加勒比波多野结衣 | 狂野欧美性猛交免费视频 | 国产乱人伦偷精品视频 | 久久人人爽人人爽人人片ⅴ | 中文字幕无码日韩专区 | 欧美丰满少妇xxxx性 | av香港经典三级级 在线 | 天堂а√在线中文在线 | 亚洲第一无码av无码专区 | 日日鲁鲁鲁夜夜爽爽狠狠 | 亚洲国产日韩a在线播放 | 日韩精品乱码av一区二区 | 无码人妻精品一区二区三区不卡 | 精品一二三区久久aaa片 | 内射爽无广熟女亚洲 | 久久精品中文字幕大胸 | 麻花豆传媒剧国产免费mv在线 | 久久无码中文字幕免费影院蜜桃 | 人妻少妇精品无码专区动漫 | 精品成人av一区二区三区 | 日日摸夜夜摸狠狠摸婷婷 | 久久伊人色av天堂九九小黄鸭 | 300部国产真实乱 | 国产97色在线 | 免 | 欧美性猛交内射兽交老熟妇 | 久久婷婷五月综合色国产香蕉 | 久久精品国产日本波多野结衣 | 亚洲精品美女久久久久久久 | 国产又爽又猛又粗的视频a片 | 97精品人妻一区二区三区香蕉 | 成熟女人特级毛片www免费 | 欧美人与善在线com | 成人免费视频一区二区 | 红桃av一区二区三区在线无码av | 欧美国产日产一区二区 | 牛和人交xxxx欧美 | 狂野欧美性猛xxxx乱大交 | 免费人成在线观看网站 | 国产亲子乱弄免费视频 | 精品水蜜桃久久久久久久 | 波多野结衣aⅴ在线 | 少妇一晚三次一区二区三区 | 初尝人妻少妇中文字幕 | 中文字幕人成乱码熟女app | 日韩在线不卡免费视频一区 | 久久久久久久人妻无码中文字幕爆 | 在线а√天堂中文官网 | 国产亚洲欧美日韩亚洲中文色 | 免费观看激色视频网站 | 国产精品视频免费播放 | 色欲久久久天天天综合网精品 | 色一情一乱一伦一视频免费看 | 蜜臀aⅴ国产精品久久久国产老师 | 伊人久久大香线焦av综合影院 | 欧洲熟妇色 欧美 | 99久久无码一区人妻 | 久久精品人人做人人综合 | 精品厕所偷拍各类美女tp嘘嘘 | av无码不卡在线观看免费 | 国产精品第一区揄拍无码 | 国产精品久久久午夜夜伦鲁鲁 | 午夜福利一区二区三区在线观看 | 偷窥日本少妇撒尿chinese | ass日本丰满熟妇pics | www国产精品内射老师 | 亚洲性无码av中文字幕 | 精品久久久中文字幕人妻 | 亚洲精品一区二区三区大桥未久 | 伊人色综合久久天天小片 | 婷婷六月久久综合丁香 | 无码国产色欲xxxxx视频 | 欧美zoozzooz性欧美 | 成 人 网 站国产免费观看 | 漂亮人妻洗澡被公强 日日躁 | 搡女人真爽免费视频大全 | 18无码粉嫩小泬无套在线观看 | 亚洲国产欧美日韩精品一区二区三区 | 午夜精品一区二区三区在线观看 | 激情内射日本一区二区三区 | 久久国产精品精品国产色婷婷 | 日产国产精品亚洲系列 | 天天做天天爱天天爽综合网 | 久久久久亚洲精品中文字幕 | 未满成年国产在线观看 | 激情综合激情五月俺也去 | 午夜精品久久久久久久 | 国产亚av手机在线观看 | 又湿又紧又大又爽a视频国产 | 无码播放一区二区三区 | 乌克兰少妇xxxx做受 | 国产特级毛片aaaaaaa高清 | 秋霞成人午夜鲁丝一区二区三区 | 男人扒开女人内裤强吻桶进去 | 国产97色在线 | 免 | 又湿又紧又大又爽a视频国产 | 中文无码成人免费视频在线观看 | 国产精品自产拍在线观看 | 国产熟妇高潮叫床视频播放 | 色综合视频一区二区三区 | 国产在线一区二区三区四区五区 | 欧美日韩综合一区二区三区 | 一本色道婷婷久久欧美 | 久久综合网欧美色妞网 | 亚洲欧美色中文字幕在线 | 无码午夜成人1000部免费视频 | 欧美性黑人极品hd | 国产在线aaa片一区二区99 | 欧美肥老太牲交大战 | 国精产品一品二品国精品69xx | 久久久久亚洲精品男人的天堂 | 久久精品人妻少妇一区二区三区 | 中文字幕无码日韩专区 | 婷婷色婷婷开心五月四房播播 | 国产舌乚八伦偷品w中 | 麻豆国产丝袜白领秘书在线观看 | 亚洲日韩乱码中文无码蜜桃臀网站 | 亚洲七七久久桃花影院 | 欧美日韩在线亚洲综合国产人 | 欧美猛少妇色xxxxx | 久久久国产一区二区三区 | 欧美日韩人成综合在线播放 | 中文字幕人妻无码一区二区三区 | 亚洲精品成a人在线观看 | 精品国产av色一区二区深夜久久 | 三级4级全黄60分钟 | 亚洲午夜久久久影院 | 亚洲一区二区三区在线观看网站 | 免费无码午夜福利片69 | 麻豆国产97在线 | 欧洲 | 无码av最新清无码专区吞精 | 无码人妻精品一区二区三区不卡 | 好男人社区资源 | 无码成人精品区在线观看 | 人妻尝试又大又粗久久 | 亚洲 激情 小说 另类 欧美 | 亚洲成av人片在线观看无码不卡 | 欧美日韩人成综合在线播放 | 性生交大片免费看女人按摩摩 | 人妻少妇被猛烈进入中文字幕 | 亚洲色欲色欲天天天www | 成年美女黄网站色大免费视频 | 亚洲国产精品美女久久久久 | 麻豆av传媒蜜桃天美传媒 | 国产精品爱久久久久久久 | 激情内射亚州一区二区三区爱妻 | 天天燥日日燥 | 中文字幕无码日韩欧毛 | 国产精品久久久午夜夜伦鲁鲁 | 国产亚av手机在线观看 | 欧美日韩色另类综合 | 少女韩国电视剧在线观看完整 | 国产一区二区三区四区五区加勒比 | 女人被爽到呻吟gif动态图视看 | 中文精品久久久久人妻不卡 | 国产内射爽爽大片视频社区在线 | 亚洲中文字幕无码中文字在线 | 学生妹亚洲一区二区 | 少妇高潮喷潮久久久影院 | 少妇性l交大片 | 亚洲精品www久久久 | 亚洲午夜福利在线观看 | 成 人 网 站国产免费观看 | 国产农村妇女高潮大叫 | 四虎国产精品一区二区 | 午夜性刺激在线视频免费 | 亚洲成在人网站无码天堂 | 天堂一区人妻无码 | 丰满少妇人妻久久久久久 | 漂亮人妻洗澡被公强 日日躁 | 精品久久久久久人妻无码中文字幕 | 麻豆果冻传媒2021精品传媒一区下载 | 人妻少妇精品无码专区二区 | 中文久久乱码一区二区 | 99精品国产综合久久久久五月天 | 国产两女互慰高潮视频在线观看 | 少妇太爽了在线观看 | 精品久久8x国产免费观看 | 麻豆md0077饥渴少妇 | 精品一区二区三区波多野结衣 | 亚洲人亚洲人成电影网站色 | 美女黄网站人色视频免费国产 | 免费网站看v片在线18禁无码 | 无码人妻丰满熟妇区毛片18 | 国产色xx群视频射精 | 国精产品一品二品国精品69xx | 亚洲精品一区二区三区婷婷月 | 中文字幕无码av波多野吉衣 | 99久久人妻精品免费二区 | 久久国产精品_国产精品 | 中文字幕无线码 | 天天拍夜夜添久久精品 | 亚洲午夜福利在线观看 | 97无码免费人妻超级碰碰夜夜 | 亚洲人成网站色7799 | 亚洲日韩中文字幕在线播放 | 中文字幕人妻无码一夲道 | 久久久国产精品无码免费专区 | 日本大香伊一区二区三区 | 天堂а√在线中文在线 | 免费人成网站视频在线观看 | 伊人久久婷婷五月综合97色 | 兔费看少妇性l交大片免费 | 欧美成人免费全部网站 | 5858s亚洲色大成网站www | 伊人色综合久久天天小片 | 中文字幕日韩精品一区二区三区 | 欧美肥老太牲交大战 | 色五月丁香五月综合五月 | 高清无码午夜福利视频 | 极品嫩模高潮叫床 | 国产精品久久久久久无码 | 国产人成高清在线视频99最全资源 | 色婷婷久久一区二区三区麻豆 | 欧美人妻一区二区三区 | 国产手机在线αⅴ片无码观看 | 丝袜人妻一区二区三区 | 色婷婷香蕉在线一区二区 | 国产精品自产拍在线观看 | 丁香啪啪综合成人亚洲 | 亚洲区小说区激情区图片区 | 人妻天天爽夜夜爽一区二区 | 曰韩无码二三区中文字幕 | 国产成人精品一区二区在线小狼 | 久久99精品久久久久久 | 久久99国产综合精品 | 在线a亚洲视频播放在线观看 | 男女下面进入的视频免费午夜 | 国产av剧情md精品麻豆 | 亚洲aⅴ无码成人网站国产app | 国产精品美女久久久 | 久久99久久99精品中文字幕 | 国产精品欧美成人 | 亚洲va中文字幕无码久久不卡 | 精品无码国产一区二区三区av | 国产特级毛片aaaaaa高潮流水 | 精品成人av一区二区三区 | 特级做a爰片毛片免费69 | 亚洲中文字幕成人无码 | 久久人人爽人人爽人人片av高清 | 久久久无码中文字幕久... | 亚洲小说春色综合另类 | 激情五月综合色婷婷一区二区 | 亚洲精品中文字幕乱码 | 色情久久久av熟女人妻网站 | 波多野结衣av在线观看 | 久久亚洲中文字幕无码 | а√天堂www在线天堂小说 | 日日碰狠狠丁香久燥 | 秋霞成人午夜鲁丝一区二区三区 | аⅴ资源天堂资源库在线 | 狠狠躁日日躁夜夜躁2020 | 国产婷婷色一区二区三区在线 | 久久综合色之久久综合 | 国产偷抇久久精品a片69 | 午夜成人1000部免费视频 | 无码国产乱人伦偷精品视频 | 日本精品人妻无码77777 天堂一区人妻无码 | 麻豆精品国产精华精华液好用吗 | 成人欧美一区二区三区黑人免费 | 日韩av无码一区二区三区不卡 | 性色欲网站人妻丰满中文久久不卡 | 亚洲精品国产a久久久久久 | 性生交大片免费看l | 秋霞成人午夜鲁丝一区二区三区 | 美女极度色诱视频国产 | 人妻少妇精品视频专区 | 久久精品国产99久久6动漫 | 夜精品a片一区二区三区无码白浆 | 免费中文字幕日韩欧美 | aⅴ亚洲 日韩 色 图网站 播放 | 中文无码精品a∨在线观看不卡 | 中文字幕乱码人妻二区三区 | 牲欲强的熟妇农村老妇女 | 日韩精品无码一区二区中文字幕 | 亚洲欧美精品aaaaaa片 | 久久综合九色综合欧美狠狠 | 对白脏话肉麻粗话av | 亚洲中文字幕久久无码 | 理论片87福利理论电影 | 高潮毛片无遮挡高清免费 | 欧美野外疯狂做受xxxx高潮 | 中文字幕无码免费久久9一区9 | 精品成在人线av无码免费看 | 亚洲狠狠色丁香婷婷综合 | 国产亚洲人成在线播放 | 伊人久久大香线蕉午夜 | 久久国产36精品色熟妇 | 国产精品久久久久9999小说 | av小次郎收藏 | 狠狠综合久久久久综合网 | 午夜精品久久久久久久 | 色 综合 欧美 亚洲 国产 | 日韩av无码一区二区三区不卡 | a在线亚洲男人的天堂 | 成人性做爰aaa片免费看 | 领导边摸边吃奶边做爽在线观看 | 欧美xxxx黑人又粗又长 | aⅴ亚洲 日韩 色 图网站 播放 | 一本大道久久东京热无码av | 377p欧洲日本亚洲大胆 | 日本乱人伦片中文三区 | av无码不卡在线观看免费 | 熟妇女人妻丰满少妇中文字幕 | 国产香蕉尹人综合在线观看 | 小sao货水好多真紧h无码视频 | 性欧美大战久久久久久久 | 成人无码精品一区二区三区 | 波多野结衣乳巨码无在线观看 | ass日本丰满熟妇pics | 亚洲成色在线综合网站 | 人人妻人人澡人人爽欧美一区 | 偷窥村妇洗澡毛毛多 | 中文字幕无码免费久久9一区9 | 7777奇米四色成人眼影 | 亚洲国产av美女网站 | 永久黄网站色视频免费直播 | 亚洲天堂2017无码中文 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 一本加勒比波多野结衣 | 欧美国产亚洲日韩在线二区 | 国产精品第一国产精品 | 女高中生第一次破苞av | 99re在线播放 | 婷婷五月综合激情中文字幕 | 中文字幕+乱码+中文字幕一区 | 亚洲中文字幕在线无码一区二区 | 婷婷综合久久中文字幕蜜桃三电影 | 欧美国产日韩久久mv | 人人妻人人澡人人爽人人精品浪潮 | 久久精品女人的天堂av | 精品国偷自产在线视频 | 日韩人妻系列无码专区 | 奇米影视888欧美在线观看 | 欧美精品无码一区二区三区 | 日本又色又爽又黄的a片18禁 | 久久精品人人做人人综合 | 高潮喷水的毛片 | 久久久av男人的天堂 | 无码国模国产在线观看 | 国产精品无码一区二区桃花视频 | 国产人妻精品一区二区三区 | 亚洲一区二区三区含羞草 |