1
當我們需要調用自身的塊,我們通常做的是這樣的:二傳手不叫塊時調用weakSelf
__typeof(&*self) __weak weakSelf = self;
的問題是,當你調用塊weakSelf.prop = @"string"
,二傳手setProp:
永遠叫做。
但是,如果你像這樣定義:
__typeof(&*self) fakeSelf = self;
的問題就迎刃而解了。
任何人都可以解釋爲什麼?還有任何潛在的問題?
首先,'&*'是多餘的(指針解除引用的地址就是一些東西)。其次,如果它沒有被調用,那麼你的類正在被釋放,然後才能在塊中進行評估。 – CodaFi
@CodaFi'&*'曾經用於從自我類型中移除隱含的__strong。不過這不再需要了。 –
「當我們需要在一個街區內自我調用時,我們通常會這樣做:」不「,我們」不「通常會這樣做」。只有當我們以特定的方式使用它時,我們纔會看到存在特定的問題(保留週期)。在許多編碼模式中,通過塊保留'self'是正確工作所必需的。 – newacct