2016-07-22 36 views
0

我讀,如果塊要外部修改變量,此變量必須通過使用關鍵字__block進行說明,因爲它必須被複制到塊本身堆。在iOS中方框如何外面修改變量,而無需使用__block

但是如果我不希望使用__block,仍然可以得到修改的變量,有沒有辦法?

我做了一些想法,也許我可以將該變量設置爲globalstatic而不是auto,這樣它將被存儲在靜態存儲區中。

或者,我可以將其設置爲指針,並指向其在堆中分配的一些內容?我試過這個不起作用的情況,我想知道爲什麼。

+1

你是什麼意思是「必須」和「必須」?你想盡量避免什麼?它不需要,但它可能有助於提高性能 –

+0

@ JulianF.Weinert,我的理解是,爲了將來的使用,ARC會自動將塊的變量複製到堆上,否則塊和它的變量將在堆棧上釋放。 – Boris

+1

是的,您可以在塊內修改外部全局或靜態變量。 – newacct

回答

0

本質上,爲了避免丟失變量,如果要訪問和修改變量,塊會將局部變量複製到堆上。但是,如果將全局變量或靜態變量存儲在全局區域中,並且不需要擔心在堆棧上丟失它,則塊將不會複製它,而是可以直接對其進行修改。

如果有任何錯誤,請糾正我,如果沒有更好的錯誤,我會標記自己的答案。

相關問題