#import "ViewController.h"
@interface ViewController ()
{
NSThread *thread;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//創(chuàng)建線程
thread = [[NSThread alloc] initWithTarget:self selector:@selector(threadAction) object:nil];
//設置名字
thread.name = @"hehe";
//啟動線程
[thread start];
}
//線程的入口方法
/*完善線程入口方法的三點
1.創(chuàng)建自動釋放池 釋放開辟的內存
2.設置runloop
3.停止runloop招拙,終止線程
*/
-(void)threadAction
{
//1.創(chuàng)建自動釋放池 釋放開辟的內存
@autoreleasepool {
//延時調用
// dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
// [NSThread exit];
// });
//使當前線程任務持續(xù)執(zhí)行 兩種方式
//第一種方式while循序
// while (1) {
// NSLog(@"123...");
// }
//第二種:開啟runloop 子線程中runloop默認是關閉的,開啟runloop必須要有事件源
//創(chuàng)建timer定時器
NSTimer *timer = [NSTimer timerWithTimeInterval:1 target:self selector:@selector(timer) userInfo:nil repeats:YES];
//將timer添加到runloop中
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];
//2.開啟runloop 使用run的方式 無法停止runloop
// [[NSRunLoop currentRunLoop] run];
//開啟runloop 運行到某個時間點停止runloop 并且?guī)в羞\行模式
// [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:5]];
//開啟runloop 運行到某個時間點停止
// [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:10]];
//3.終止runloop的方式
// [[[NSThread currentThread] threadDictionary] setValue:@(NO) forKey:@"isExit"];
//獲取線程字典屬性 目的:記錄當前前程是否退出的狀態(tài)
NSMutableDictionary *threadDictionary =[[NSThread currentThread] threadDictionary];
BOOL exit = NO;
[threadDictionary setValue:@(exit) forKey:@"isExit"];
//while循環(huán)判斷 根據(jù)線程中字典屬性判斷
while (!exit) {
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate date]];
exit = [[threadDictionary objectForKey:@"isExit"] boolValue];
}
}
}
-(void)timer
{
NSLog(@"hehe");
}
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
//觸摸屏幕時停止線程任務
[thread.threadDictionary setValue:@(YES) forKey:@"isExit"];
}
@end
多線程 線程入口完善方法
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門最疆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來杯巨,“玉大人,你說我怎么就攤上這事努酸》” “怎么了?”我有些...
- 正文 為了忘掉前任逗爹,我火速辦了婚禮,結果婚禮上戳表,老公的妹妹穿的比我還像新娘桶至。我一直安慰自己,他們只是感情好匾旭,可當我...
- 文/花漫 我一把揭開白布镣屹。 她就那樣靜靜地躺著,像睡著了一般价涝。 火紅的嫁衣襯著肌膚如雪女蜈。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼簇宽,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了吧享?” 一聲冷哼從身側響起魏割,我...
- 正文 年R本政府宣布,位于F島的核電站溃卡,受9級特大地震影響溢豆,放射性物質發(fā)生泄漏。R本人自食惡果不足惜瘸羡,卻給世界環(huán)境...
- 文/蒙蒙 一漩仙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧犹赖,春花似錦队他、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至粘昨,卻和暖如春垢啼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背张肾。 一陣腳步聲響...
推薦閱讀更多精彩內容
- 一俭缓、線程的概述 進程:正在運行的程序克伊,負責了這個程序的內存空間分配,代表了內存中的執(zhí)行區(qū)域华坦。線程:就是在一個進程中...
- 1椿息、好處: 1、使用線程可以把程序中占據(jù)時間長的任務放到后臺去處理坷衍,如圖片寝优、視頻的下載 2、發(fā)揮多核處理器的優(yōu)勢枫耳,...