iOS多线程编程

#线程和进程
进程就是一个独立的应用程序,是cpu调度的独立单元,享有独立的系统资源(内存)
线程是进程中的执行单元,是cpu调用的最小单位,一个进程可以有多个线程但至少有一个,它们中有一个为主线程,其他为分线程
#多线程编程
在我们编写程序时,有的任务会花取大量时间进行处理,所以我们为了防止这些任务阻塞到我们的主线程,照成UI卡顿,会用到多线程编程。
#iOS中多线程编程主要有三种方式

  • NSThread:
  • NSOperation && NSOperationQueue
  • **GCD **
    ##1.NSThread
    NSThread多任务处理时,程序员需要手动对线程的生周期进行管理,线程数量完全自己决定
    ###开辟分线程的三个方法
  • 静态方法创建:
 //参数:1.分线程执行的函数 2.分线程方法的执行者 3.参数
 [NSThread detachNewThreadSelector:@selector(threadMethod1) toTarget:self withObject:nil];
  • 使用alloc init方式创建线程 需要启动线程
 NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(threadMethod2) object:nil];
thread.name = @"bibi";
    // 启动线程
[thread start];
  • 隐性开辟分线程
   // 在performSelector系列方法中 只有此方法可以开辟分线程
    [self performSelectorInBackground:@selector(threadMethod3) withObject:nil];

###其他方法

    // 此方法指定的testMehtod是在主线程中执行的
    [self performSelector:@selector(testMehtod)];
    // 退出线程  肾用
    [NSThread exit];
	//获取当前线程
	[NSThread currentThread]
	//判断是否是主线程
	[NSThread isMainThread]
	//获取主线程
	[NSThread mainThread]

    // 让当前线程休眠
    [NSThread sleepForTimeInterval:10];

***注意:***在分线程中不能操作UI,需要回到主线程中操作UI

 // 参数:1.回到主线程执行的方法 2.参数 3.是否要锁住当前线程等待主线程方法执行完毕
    [self performSelectorOnMainThread:@selector(mainThreadMethod) withObject:nil waitUntilDone:NO];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值