簡體   English   中英

不使用ARC時替換__weak

[英]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 ,表明您的變量應該拍攝時,可保留。

請注意, __blockretain行為的影響在ARC和手動保留計數之間是不同的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM