iOS多線程之二:NSThread的使用

NSThread
NSThread封裝性最差鲁豪,最偏向于底層,主要基于thread使用律秃,生命周期需要手動管理爬橡,所以這套方案也是偶爾用用,比如 [NSThread currentThread]棒动,它可以獲取當(dāng)前線程類糙申,你就可以知道當(dāng)前線程的各種屬性,用于調(diào)試十分方便船惨。

一柜裸、線程創(chuàng)建

// 創(chuàng)建并自動啟動
[NSThread detachNewThreadSelector:@selector(threadAlloc:) toTarget:self withObject:nil];

// 先創(chuàng)建線程,再啟動
NSThread *newThread = [[NSThread alloc] initWithTarget:self selector:@selector(run:) object:obj];
[newThread run];

// ios(10.0)粱锐,線程的創(chuàng)建疙挺,線程創(chuàng)建后直接運行
[NSThread detachNewThreadWithBlock:^{
   [do something];
}];

[NSThread detachNewThreadSelector:@selector(run:) toTarget:self withObject:obj];

Paste_Image.png

二、線程之間的通訊

// 在主線程中運行方法怜浅,wait表示是否阻塞這個方法的調(diào)用铐然,如果為YES則等待主線程中運行方法結(jié)束,一般可用于在子線程中調(diào)用UI方法海雪。
- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(nullable id)arg waitUntilDone:(BOOL)wait modes:(nullable NSArray<NSString *> *)array;

// 隱含產(chǎn)生新線程
- (void)performSelectorInBackground:(SEL)aSelector withObject:(nullable id)arg;

// 在指定線程中執(zhí)行锦爵,但該線程必須具備run loop。
- (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(nullable id)arg waitUntilDone:(BOOL)wait modes:(nullable NSArray<NSString *> *)array;

三奥裸、NSThread的其它一些常用的方法

+ (NSThread *)currentThread;                     // 獲得當(dāng)前線程
+ (void)sleepForTimeInterval:(NSTimeInterval)ti; // 線程休眠
+ (NSThread *)mainThread;                        // 主線程险掀,亦即UI線程了
+ (BOOL)isMainThread;                            // 判斷當(dāng)前線程是否是主線程
+ (BOOL)isMultiThreaded;                         // 判斷當(dāng)前線程是否是多線程
+ (void)sleepUntilDate:(NSDate *)date;           // 當(dāng)前線程休眠到指定日期
+ (void)exit;                                    // 強行退出當(dāng)前線程
+ (double)threadPriority;                        // 獲取當(dāng)前線程線程優(yōu)先級
+ (BOOL)setThreadPriority:(double)p;             // 給當(dāng)前線程設(shè)定優(yōu)先級,調(diào)度優(yōu)先級的取值范圍是0.0 ~ 1.0湾宙,默認(rèn)0.5樟氢,值越大冈绊,優(yōu)先級越高。
+ (NSArray *)callStackReturnAddresses            // 線程的調(diào)用都會有函數(shù)的調(diào)用函數(shù)的調(diào)用就會有棧返回地址的記錄埠啃,在這里返回的是函 數(shù)調(diào)用返回的虛擬地址死宣,說白了就是在該線程中函數(shù)調(diào)用的虛擬地址的數(shù)組
+ (NSArray *)callStackSymbols                    // 同上面的方法一樣,只不過返回的是該線程調(diào)用函數(shù)的名字?jǐn)?shù)字
+ (BOOL)isMainThread;                            // 當(dāng)前線程是否主線程
- (BOOL)isMainThread; 
- (BOOL)isExecuting;                             // 線程是否正在運行
- (BOOL)isFinished;                              // 線程是否已結(jié)束
- (void)cancel                                   // 終止線程循環(huán)
- (void)start                                    // 開啟線程循環(huán)
- (void)isCancelled;                             //判斷線程是否撤銷
- (void)setName:(NSString *)n;                   //設(shè)置線程名稱
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末碴开,一起剝皮案震驚了整個濱河市毅该,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌潦牛,老刑警劉巖眶掌,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異巴碗,居然都是意外死亡朴爬,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門橡淆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來召噩,“玉大人,你說我怎么就攤上這事逸爵【叩危” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵痊银,是天一觀的道長抵蚊。 經(jīng)常有香客問我,道長溯革,這世上最難降的妖魔是什么贞绳? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮致稀,結(jié)果婚禮上冈闭,老公的妹妹穿的比我還像新娘。我一直安慰自己抖单,他們只是感情好萎攒,可當(dāng)我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著矛绘,像睡著了一般耍休。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上货矮,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天羊精,我揣著相機與錄音,去河邊找鬼囚玫。 笑死喧锦,一個胖子當(dāng)著我的面吹牛读规,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播燃少,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼束亏,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了阵具?” 一聲冷哼從身側(cè)響起碍遍,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎怔昨,沒想到半個月后雀久,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡趁舀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了祝沸。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片矮烹。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖罩锐,靈堂內(nèi)的尸體忽然破棺而出奉狈,到底是詐尸還是另有隱情,我是刑警寧澤涩惑,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布仁期,位于F島的核電站,受9級特大地震影響竭恬,放射性物質(zhì)發(fā)生泄漏跛蛋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一痊硕、第九天 我趴在偏房一處隱蔽的房頂上張望赊级。 院中可真熱鬧,春花似錦岔绸、人聲如沸理逊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽晋被。三九已至,卻和暖如春刚盈,著一層夾襖步出監(jiān)牢的瞬間羡洛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工扁掸, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留翘县,地道東北人最域。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像锈麸,于是被迫代替她去往敵國和親镀脂。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容