IOS开发学习笔记(七)——多线程应用程序开发

IOS上的多线程应用程序开发需要使用到Block,Block就是类似于C++中的函数指针的概念。


Block的主要用途在于多线程操作的情况。正常情况下流程如下:
  1. 创建一个queue;dispatch_queue_create
  2. 添加block到queue;dispatch_async


我们的界面中有两个button,两个label,事件处理代码如下:

- (IBAction)generateNumber:(id)sender {
    NSString *str = [[NSString alloc] initWithFormat:@"Generate Number is %d.", arc4random()];
    [randomNumber setText: str];
    
}

- (IBAction)sleep:(id)sender {
    [sleepText setText: @"Now I'm going to sleep."];
    [NSThread sleepForTimeInterval:5];
    [sleepText setText: @"Now I wake up!"];
}

可以看到,在没有多线程处理的情况下,我们点击sleep按钮之后,在wake up之前是不能点击generate按钮的,所以需要多线程处理。代码修改为:


- (IBAction)generateNumber:(id)sender {
    NSString *str = [[NSString alloc] initWithFormat:@"Generate Number is %d.", arc4random()];
    [randomNumber setText: str];
    
}

- (IBAction)sleep:(id)sender {
    queue = dispatch_queue_create("my working queue", NULL);
    // 工作线程在后台异步工作
    dispatch_async(queue, ^(void){
        [self workingBackground];
    });
    

}

- (void)workingBackground
{
    // 模拟后台工作
    [NSThread sleepForTimeInterval:5];
    // 通知前台刷新
    dispatch_async(dispatch_get_main_queue(), ^(void){
        [self refreshForground];
    });
}

- (void)refreshForground
{
    [sleepText setText:@"Now I wake up!"];
}
        






你可能感兴趣的:(多线程,ios)