![](/img/trans.png)
[英]When the object will be released assigning a strong reference to a weak reference, using ARC?
[英]substituting for __weak when not using ARC
我有這行代碼:
__weak NSBlockOperation *weakOperation = operation;
這是觸發此編譯器錯誤:
__weak attribute cannot be specified on automatic variable.
原因是我沒有啟用ARC(尚未准備好進行切換)。 所以從另一個StackOverFlow問題,我被建議使用:
__unsafe_unretained NSBlockOperation *weakOperation = operation;
這使得錯誤消失,但對於我正在使用它的上下文,它不起作用(如果感興趣,請參閱此問題: 如何取消NSOperationQueue )。
所以我的問題是,在這個實例中我可以用__weak
關鍵字代替什么來擺脫這個警告? 當我使用__weak
,一切都能正常工作,但我擔心它不會在iOS的未來版本中占據上風。
您不應該擔心iOS的未來版本,因為__weak
是編譯器在為您生成代碼時解釋的內容。
查看您的其他帖子向我建議您的目標是盡管在塊內引用,但weakOperation
避免保留weakOperation
。 在特定情況下,如果你不使用ARC,可以更換__weak
通過__block
,表明您的變量應該不拍攝時,可保留。
請注意, __block
對retain
行為的影響在ARC和手動保留計數之間是不同的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.