iOS 面试题~经验找代码错误

//联系人:石虎 QQ:1224614774 昵称:嗡嘛呢叭咪哄

一、概念


1.指出以下这段代码的问题


 - (void)test{

    

    CGRect frame = CGRectMake(20, 200, 200, 20);

    self.alert = [[UILabel alloc]initWithFrame:frame];

    self.alert.text =@"Please wait 10 seconds...";

    self.alert.textColor = [UIColor redColor];

    [self.view addSubview:self.alert];

    

    NSOperationQueue *waitQueue = [[NSOperationQueuealloc]init];

    [waitQueue addOperationWithBlock:^{

        [NSThreadsleepUntilDate:[NSDatedateWithTimeIntervalSinceNow:10]];

     

        self.alert.text = @"石虎";

        NSLog(@"执行一个新的操作,线程:%@", [NSThread currentThread]);

    }];

}


正确修改为:


 [waitQueue addOperationWithBlock:^{

        [NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:10]];

    //正确要在主线程赋

    dispatch_async(dispatch_get_main_queue(), ^{

        self.alert.text = @"石虎";

    });

    

    NSLog(@"执行一个新的操作,线程:%@", [NSThread currentThread]);

}];




2.写出下列程序的输出结果


typedef void (^BoringBlock)(void);


int main(int argc,constchar *argv[])

{

    int a = 23;

    __block int b =23;

    

    BoringBlock block1 = ^{NSLog(@"a1==%d",a);};

    BoringBlock block2 = ^{NSLog(@"b1==%d",b);};

    

    

    a = 32;

    b = 32;

    BoringBlock block3 = ^{NSLog(@"a1==%d",a);};

    BoringBlock block4 = ^{NSLog(@"b2==%d",b);};

    

    block1();

    block2();

    block3();

    block4();

    

    return 0;

}


打印结果:

2017-10-3020:29:25.645 石虎测试 demo[969:6507971] a1==23

2017-10-3020:29:25.646 石虎测试 demo[969:6507971] b1==32

2017-10-3020:29:25.646 石虎测试 demo[969:6507971] a1==32

2017-10-3020:29:25.646 石虎测试 demo[969:6507971] b2==32


谢谢!!!


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值