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!"];
}
        






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值