1
我正在尋找一些有關的區別__weak
和__block
爲什麼使用typeof()創建弱引用不需要指針星號?
-
To ARC or not to ARC? What are the pros and cons?
- What is the difference between a __weak and a __block reference?
,並發現,如果我使用ARC,我應該使用塊
__weak
引用。
之間
我的舊代碼是這樣的:
__block GWTSDemandContactsController *safeMe = self;
[GWTSService getSuggestedContactsForDemand:self.demand success:^(NSArray *contacts) {
safeMe.activityLoading.hidden = true;
[safeMe setContactsForView:contacts];
} failure:^(NSError *error) {
safeMe.activityLoading.hidden = true;
}];
然後,當我遷移到使用ARC,我開始使用__weak
,也發現了,我可以用typeof(self)
這是很si所以我不必每次都想寫保存self
引用的類的名字。所以,現在我的代碼看起來是這樣的:
__weak typeof(self) safeMe = self;
,但爲什麼我們避免*
這裏?它不應該是對self
的引用嗎?我們通過避免*
在這裏存儲什麼?
我不知道我是否缺少某些東西,但我無法理解這一點。
謝謝,很好的解釋!我想我明白了。所以'typeof(self)'就像是寫'GWTSDemandContactsController *'(包含'*')?這就是你的意思嗎? –
是的,就是這樣。 –
謝謝,簡直難以置信! –