2017-04-07 52 views
0

enter image description here塊變量使用__weak爲什麼有時候有值,有時爲零

圖中的變量有時正常,有時爲零

+0

你有沒有試過不'__weak'? – YumYumYum

+0

試過,沒有__weak是正常的。但是我想知道這個原因並不是因爲我在完成這個代碼塊之後使用了返回值,__指向釋放變量的弱引用? – mTerminal

+1

在這種情況下,您不需要在信號塊中使用'weak',因爲沒有引用'self'或任何實例變量,所以不存在保留週期。 –

回答

0

當標記該變量作爲__weak,沒有保留消息發送到它。這意味着如果塊超出變量,那麼當塊試圖讀取它時,它將爲空,因爲它沒有被保留。

Relevant clang doc

+0

但不是每次都是零,有時可以正常的值。 而這種情況出現在iPhone 5機型上,與處理器32和64沒有關係? – mTerminal

+0

這取決於塊何時執行。如果塊超出了對象,那麼變量將爲零或更糟,這可能是別的。 – Aris

相關問題