Objective-C块中的变量范围

时间:2012-08-09 15:09:37

标签: objective-c objective-c-blocks

我在块中有以下代码片段,并想知道在枚举中声明局部变量是否很酷?我真的不想处理__block等,所以想看看下面的代码是否有任何问题:

 [self.assets enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
     NSData *imageToUpload = UIImageJPEGRepresentation([(UIImageView *)obj image], 90);
     NSString *imageName = [NSString stringWithFormat:@"Image%d",idx];
     NSString *fileName = [NSString stringWithFormat:@"Image%d.jpeg",idx];
 }];

1 个答案:

答案 0 :(得分:4)

这些变量原样无用。它们不存储在其他地方,并且在runloop结束时自动释放。

将您的块视为一个自包含的函数:它不会在其范围之外写入任何内容,也不会返回任何内容。