ios 线程使用

 NSThread 有两种直接创建方式:

- (id)initWithTarget:(id)target selector:(SEL)selector object:(id)argument

+ (void)detachNewThreadSelector:(SEL)aSelector toTarget:(id)aTarget withObject:(id)anArgument

[NSThread detachNewThreadSelector:@selector(doSomething:) toTarget:self withObject:nil];

NSThread* myThread = [[NSThread alloc] initWithTarget:self
                                        selector:@selector(doSomething:)
                                        object:nil];
[myThread start];

  

//主线程
 [self performSelectorOnMainThread:@selector(updateUI:) withObject:image waitUntilDone:YES];  

  

GCD

//添加一个子线程
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        //读取文件
        NSString *fileURL = [NSString stringWithFormat:@"http://cam.ppcam.tv/camera_image/2330000010/alarm.log"];
        NSData *date = [NSData dataWithContentsOfURL:[NSURL URLWithString:fileURL]];
        NSString* content = [[NSString alloc] initWithData:date encoding:NSASCIIStringEncoding];
        
        //当子线程处理完成在主线程中处理
        dispatch_sync(dispatch_get_main_queue(), ^{
            m_labText.numberOfLines = 0;
            m_labText.text = content;
            self.m_strDataSource = content;
        });
    });

 

并行

        dispatch_async(dispatch_get_global_queue(0, 0), ^{
            //1、get alarm info
            [m_vcMain readAlarmInfo];
        });
        dispatch_async(dispatch_get_global_queue(0, 0), ^{
            //2、get device cap
            [CommonReq getDeviceCap];
        });
        dispatch_async(dispatch_get_global_queue(0, 0), ^{
            //3、set bitstate to low and resolution to smooty
            [CommonReq setCameraBitrate:@"0"];      //bitstate
            [CommonReq switchLiveViewQuality:@"0"]; //Smooth
        });    

  

  

 

延迟执行

//延迟0.5秒执行
        [self performSelector:@selector(clickloginBtn:) withObject:nil afterDelay:0.5];

  

 

posted @ 2013-12-05 19:04  暖流  阅读(232)  评论(0编辑  收藏  举报