NSThead

1、线程的创建:

方式一:NSObject隐含的方法:

// 在新线程里执行 对象 A 的 methodInA 方法, 后面是传递的参数
[A performSelectorInBackground:@selector(methodInA:) withObject:obj];

方式二:快速创建,无返回值:

// 在新线程里执行 对象 A 的 methodInA 方法, 后面是传递的参数
[NSThread detachNewThreadSelector:@selector(methodInA:) toTarget:A withObject:obj];

方式三:alloc创建:

// 在新线程里执行 对象 A 的 methodInA 方法, 后面是传递的参数
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(aBackgroundThread:) object:obj];
[thread start];

第三种创建方式,要调用start方法,这个方法不是立即执行,而是加入进程池。

2、线程的相关参数:

thread.name = @"aThreadName";
thread.threadPriority = 0.5; // 优先级,0-1.0,默认0.5
thread.stackSize = 512 * 1024; // 线程栈大小,默认512k,最小16k
    
thread.isMainThread; // 线程是否为主线程
thread.threadDictionary; // 线程的相关信息
thread.isCancelled; // 线程是否被取消

3、线程的中途退出:

方式一:在线程外面做标记,在线程内的关键节点检测标记并退出线程:

//线程外
[thread cancel];

// 线程内
if (thread.isCancelled) {
    return;
}

方式二:在线程内执行退出:

// 线程内
[NSThread exit];

4、线程的休眠:

方式一:

// 休眠固定的秒数
[NSThread sleepForTimeInterval:someSeconds];

方式二:

// 在某个时间点唤醒
[NSThread sleepUntilDate:aDate];

注意:一个线程在自然执行结束的时候,会自动结束线程,只有中途想退出的时候才需要调用以上的方法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容