为什么进入Block块的成员变量要加__block修饰

__block UIImage*image1=nil;


因为此时它是一个局部变量,有可能你的block还没有执行完毕,当前的这个image已经被销毁掉了。所以应该加上__block保住它的命

在block块中局部变量使用完毕我们需要手动把他们置为nil。告诉它那个局部变量可以死了



 NSBlockOperation *combine = [NSBlockOperation blockOperationWithBlock:^{
        // 开启新的图形上下文
        UIGraphicsBeginImageContext(CGSizeMake(100, 100));
        
        // 绘制图片
        [image1 drawInRect:CGRectMake(0, 0, 50, 100)];
        image1 = nil;
        
        [image2 drawInRect:CGRectMake(50, 0, 50, 100)];
        image2 = nil;
        
        // 取得上下文中的图片
        UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
        
        // 结束上下文
        UIGraphicsEndImageContext();
        
        // 回到主线程
        [[NSOperationQueue mainQueue] addOperationWithBlock:^{
            self.imageView.image = image;
        }];
    }];


版权声明:本文为u012131827原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。