ios 地理编码地址字符串在阻止期间修改全局变量



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

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

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

向任何可能被我最初的假设误导的人道歉! 为了记录在案,我确实认为苹果文档上的文字在这里的块和变量有点误导......它提到唯一可变的变量是__block函数级变量,而它说所有其他变量"可以访问",我认为这意味着"只读"(我知道getter和setter都是访问器,但上下文令人困惑)。

最新更新