簡體   English   中英

Objective-C ARC __weak變量引用觸發警告“無法在自動變量上指定__weak屬性”

[英]Objective-C ARC __weak variable reference triggers warning “__weak attribute cannot be specified on an automatic variable”

我有一個應用程序(只有ios5),在方法內部聲明一個在塊內使用的弱變量來引用一個視圖控制器的實例。

 QRCodeViewController * __weak weakSelf = self;

問題是編譯器顯示警告說:

無法在自動變量上指定__weak屬性

在那個應用程序中我使用了很多弱引用,我從來沒有看過這樣的警告,與其他類的唯一區別是這個類是在.mm文件中實現的,因為它使用了c ++對象而項目無法編譯如果我把它留作.m。
我必須說代碼似乎工作正常。
有什么建議嗎?

面對同樣的警告,我通過以下方式使用__block屬性使其消失:

__block __weak MyViewController* weakSelf = self;

我不知道為什么警告說__weak不能指定。 AFAIK應該可以指定它,即使將__weak用於自動變量也是非常危險的。

Apple文檔說如果你這樣做,編譯器會提供警告,但實際的警告文本似乎暗示該屬性將被忽略,不僅僅是使用它是危險的,而文檔似乎暗示它是危險的,但它的工作原理如預期的那樣(如果你真的明白會發生什么)。

您將不得不進行一些實驗來驗證警告文本是否不合適或文檔是否未正確更新。

暫無
暫無

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

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