块处理程序中变量的可见性(范围)

Posted

技术标签:

【中文标题】块处理程序中变量的可见性(范围)【英文标题】:Visibility (scope) of variables in block handler 【发布时间】:2012-03-16 07:15:40 【问题描述】:

这听起来可能是一个新手问题,但我是 ios 开发新手。

arg1arg2 在以下代码中的 completionHandler 块中是否可见?如果不是,将这些变量传递给块的正确方法是什么?

- (void)addCurrentLocationNameToDB:(CLLocation *)location param1:(NSString*)arg1 param2:(NSString*)arg2 

     CLGeocoder * geoCoder = [[CLGeocoder alloc] init];
     [geoCoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) 
     
             [self locationNameDidReceive:locationName forLocation:location forTrip:arg1 waypoint:arg2];
     ];

【问题讨论】:

【参考方案1】:

是的,只需使用它们。在此处阅读有关块的更多信息: http://developer.apple.com/library/ios/#DOCUMENTATION/Cocoa/Conceptual/Blocks/Articles/bxVariables.html

(这是街区的一大优势 - 你几乎停留在周围的范围内)

【讨论】:

以上是关于块处理程序中变量的可见性(范围)的主要内容,如果未能解决你的问题,请参考以下文章

原子性有序性和可见性解释

Java中的可变范围和可见性

多线程—— 内存可见性

并发编程之原子性可见性有序性的简单理解

java开发师笔试面试每日12题

更改子类中父方法的可见性范围