iOS多線程(二)-- NSThread

NSThread也是iOS實(shí)現(xiàn)多線程的一種解決方案,是objc語言。線程的生命周期也是程序員管理。

  • 一個(gè)NSThread對象就是一個(gè)線程。
  • 用NSThread創(chuàng)建線程有三種方法。

方法1:

- (void)createThread1
{
    // 創(chuàng)建線程
    NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(download:) object:@"http://b.png"];
    //給線程設(shè)置名字
    thread.name = @"下載線程";
    // 啟動(dòng)線程(調(diào)用self的download方法)
    [thread start];
}
  • 這種方法的特點(diǎn)是可以拿到線程對象thread,可以對此對象進(jìn)行一些操作,如設(shè)置名字等。
  • 注意:創(chuàng)建線程對象之后要調(diào)用-start操作,才會(huì)開啟線程。

方法2:

- (void)createThread2
{
    [NSThread detachNewThreadSelector:@selector(download:) toTarget:self withObject:@"http://a.jpg"];
}
  • 這種方式創(chuàng)建線程可以直接啟動(dòng),但是不能拿到線程對象。

方法3:

- (void)createThread3
{
    [self performSelectorInBackground:@selector(download:) withObject:@"http://c.gif"];
}
  • 這個(gè)方法是隱式的創(chuàng)建新的線程,并開啟線程進(jìn)行對應(yīng)的操作。
  • 注意方法中的InBackground,這個(gè)方法區(qū)別于下面的方法。
[self performSelector:@selector(download:) withObject:@"http://c.gif"];
  • 這個(gè)方法不會(huì)創(chuàng)建線程,會(huì)在當(dāng)前線程中進(jìn)行操作。
開啟線程調(diào)用的download方法實(shí)現(xiàn)如下:
- (void)download:(NSString *)url
{
    NSLog(@"下載東西---%@---%@", url, [NSThread currentThread]);
}
  • 這個(gè)方法就是模擬下載操作,并且打印當(dāng)前線程,在方法1中調(diào)用此方法會(huì)會(huì)打印出線程的名字是下載線程
有的時(shí)候我們b不知道當(dāng)前的線程是主線程還是子線程,這時(shí)候就可以調(diào)用方法[NSThread currentThread];來判斷。
另外可以調(diào)用方法[NSThread mainThread];來拿到主線程進(jìn)行線程之間的通信,那么什么是線程間通信呢?

線程間通信

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容