2016-06-28 63 views
0

假設這樣的情況:這是強還是弱?

__weak UIImage *image = [self calculateImage]; 

// a few lines later... 

image = [self calculateImageUsingAnotherProcess]; 

假設calculateImagecalculateImageUsingAnotherProcess返回強引用。

好的,在第一種情況下,imageweak但第二個呢?請問image維護weak方面?

+0

據我所知,這是一種強到弱的方式,圖像(作爲弱點)將在內存中,直到強大的參考指向它。 –

+0

是什麼?你解釋的方式聽起來像克林貢和我的大腦融化。 – SpaceDog

+0

如何calculateImage和calculateImageUsingAnotherProcess返回強引用。 ?圖像對象很弱意味着它很弱,無所謂它指向的是什麼 –

回答

4

第二個也將保持弱勢。申報後不能更改。

+0

謝謝!我只是檢查,看看我是否正確理解它... – SpaceDog

+0

沒問題:)問這種問題是正常的。 –

1

在這個意義上,你不能返回一個強有力的參考。這是放置參考的容器,決定它是強大的,弱的還是其他的。如果你已經聲明瞭一個weak容器,那麼你分配給它的任何引用都將被保持爲弱。

按照慣例,由calculateImageUsingAnotherProcess返回的東西將是非自動釋放池以外的所有者。

所以,雖然是真的,但並不是說引用的強度「在聲明後不能改變」,而是沒有機制允許你嘗試這樣做,相應地,沒有這樣的嘗試你的代碼。