iOS中关于多线程的一些方法

OC里面, 程序的多线程执行是一个很重要的环节, 单线程的APP是不能满足用户体验的, 因为, 单线程的app过于单调, 并且运行多个程序的时候容易产生加载缓慢或者网络延迟的问题, 影响了用户体验肯定不是一个好的app, 所以我们要进行多线程的操作:


多线程分为三种类型:

1. NSThread:

初始化方法:

 NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector( ) object:nil];
//    [thread start];
//    [thread release];
便利构造器:

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

2.NSobject:

//在后台运行

 [self performSelectorInBackground:@selector( ) withObject:nil];

3. (1)我们可以自定义一个NSOperation 来设置同步和并发

 Operation *operation = [[Operation alloc] init];
    //[operation start];
    Operation *operation2 = [[Operation alloc] init];
    
    
    //添加子线程 并设置他们的同步和并发
    //NSOperationQueue 线程队列 (会自动调用他的start方法)
    NSOperationQueue *queue = [[NSOperationQueue alloc] init];
    
    [queue setMaxConcurrentOperationCount:1];//限制最大的并发数(若为1为同步)
    
    [queue addOperation:operation];
    [queue addOperation:operation2];
    
    [operation2 release];
    [operation release];
    [queue release];
    (2) 我们可以使用系统的多线程方法

 // NSBlockOperation
    NSBlockOperation *ope =[NSBlockOperation blockOperationWithBlock:^{
        //block里面是多线程要执行的代码
        
        }
        
    }];
    
    NSOperationQueue *queue = [[NSOperationQueue alloc] init];
    
    [queue addOperation:ope];
    [queue release];
    
    
    //NSInvocationOperation
    
    NSInvocationOperation *opera = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector( ) object:nil];
   
    
    NSOperationQueue *queue = [[NSOperationQueue alloc] init];
    [queue addOperation:opera];
     [queue release];


4.GCD

GCD使我们开发过程中最常用的多线程方法,GCD大致有两种方式: 同步和并发:

步骤: 创建一个同步队列, 把Block中的内容放入同步队列中, 然后把队列和主线程异步执行

dispatch_queue_t queue = dispatch_queue_create("first", DISPATCH_QUEUE_SERIAL); 
    //把block中的内容(多线程的代码)放入同步队列中, 然后把队列和主线程异步执行(因为是C语言不能写自动释放池)
    dispatch_async(queue, ^{
    
        
        //显示到界面上, 所有根UI有关的内容全部都要在主线程上运行
        dispatch_async(dispatch_get_main_queue(), ^{
            
        });
    });
}

GCD的并行队列
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    
   
    });
});
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值