0

我知道对 CLGeocoder geocodeAddressString 的调用是异步的,传入一个块以在完成时处理回调。我也知道块内唯一可变的变量是局部 __block 变量。但是我需要将生成的 CLPlacemarks 存储在全局 NSMutableArray 变量中,我无法弄清楚这是如何发生的。任何 __block 变量只能在同一个方法中访问,但在它们具有任何值(即在块内)时,我不能为全局数组分配任何值。在块之后,__block 变量可能不会有任何值,因为调用异步 geocodeAddressString 时会立即返回。

如何存储调用的结果,以便它们可以用于更新 UITableView?

4

1 回答 1

0

好的,解决了。我错误地推断(从我对块的阅读中)无法在块的范围内修改属性和实例变量。就我而言,我无法修改 iVar 数组的原因是我没有分配/初始化它。一旦我这样做了,我就能够分配值并在块之外查看它们,例如在我的表格视图的 cellForRowAtIndexPath 方法中。

向任何可能被我最初的假设误导的人道歉!作为记录,我确实认为 Apple docs re blocks & variables 上的文本有点误导......它提到的唯一可变变量是 __block 函数级变量,而它说所有其他“可以被访问”,我将其理解为“只读”(我知道 getter 和 setter 都是访问器,但上下文令人困惑)。

于 2012-10-05T14:43:39.690 回答