ios线程-创建及通信

创建、启动线程;

(1) NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil];

  [thread start]; // 线程一启动,就会在线程thread中执行self的run方法


(2)创建线程后自动启动线程:[NSThread detachNewThreadSelector:@selector(run) toTarget:self withObject:nil];


3)隐式创建并启动线程:  [self performSelectorInBackground:@selector(run) withObject:nil];//子线程在后台运行


获得当前线程: NSThread *current = [NSThread currentThread];


+ (NSThread *)mainThread; // 获得主线程

- (BOOL)isMainThread; // 是否为主线程

+ (BOOL)isMainThread; // 是否为主线程


线程的调度优先级:调度优先级的取值范围是0.0 ~ 1.0,默认0.5,值越大,优先级越高:
+ (double)threadPriority;
+ (BOOL)setThreadPriority:(double)p;


设置线程的名字:
- (void)setName:(NSString *)n;
- (NSString *)name;


线程间通信常用方法:

   //给主线程传的方法名,参数,是否阻塞

- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait;

//给指定线程传的方法名

- (void)performSelector:(SEL)aSelector onThread:(NSThread *)thr withObject:(id)arg waitUntilDone:(BOOL)wait;


waitUntilDone是YES的话,子线程结束后 会阻塞主线程 走callBack方法
如果是NO的话 就不会阻塞 主线程

@synchronized:加锁

线程阻塞:

    [NSThread sleepForTimeInterval:2.0];
    //第二种设置线程阻塞2,以当前时间为基准阻塞4秒
    NSDate *date=[NSDate dateWithTimeIntervalSinceNow:4.0];
    [NSThread sleepUntilDate:date];




34     NSURL *urlstr=[NSURL URLWithString:@"fdsf"];
35 
36     //把图片转换为二进制的数据
37     NSData *data=[NSData dataWithContentsOfURL:urlstr];//这一行操作会比较耗时
38 
39     //把数据转换成图片
40     UIImage *image=[UIImage imageWithData:data];









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值