2012-10-05 50 views
0

我知道對CLGeocoder geocodeAddressString的調用是異步的,並且傳入的塊將在完成時處理回調。我也明白,塊內可變的唯一變量是本地__block變量。但是我需要將得到的CLPlacemarks存儲在一個全局NSMutableArray變量中,而我無法弄清楚會發生什麼。任何__block變量只能在同一個方法中訪問,但是在它們有任何值的地方(即在塊內),我不能給全局數組賦值。在塊之後,__block變量可能沒有任何值,因爲調用異步geocodeAddressString時立即返回。ios geocodeAddressString在程序段修改全局變量

如何存儲調用的結果,以便它們可以用來更新UITableView?

回答

0

好的,解決了。我錯誤地推斷(從我關於塊的閱讀中)無法在塊的範圍內修改屬性和實例變量。在我的情況下,我無法修改我的iVar數組的原因是我沒有分配/初始化它。一旦我這樣做了,我就可以分配值並在塊之外查看它們,例如在我的表格視圖的cellForRowAtIndexPath方法中。

向任何可能被我最初假設誤導的人道歉!爲了記錄,我確實認爲蘋果文檔上的文本塊&變量here有點誤導......它提到的唯一變量是可變的__block函數級變量,而它說所有其他「可以被訪問「,我認爲它的含義是」只讀「(我知道getter和setter都是訪問器,但上下文很混亂)。

+0

您始終正在訪問(即讀取)對象指針變量的值,以發送消息或訪問其指向的對象的字段。更改變量意味着分配給它。 – newacct