6

メソッド内で、ビューコントローラーのインスタンスを参照するためにブロック内で使用される弱い変数を宣言するアプリ(ios5のみ)があります。

 QRCodeViewController * __weak weakSelf = self;

問題は、コンパイラが次のような警告を表示することです。

__weak属性を自動変数に指定することはできません

そのアプリケーションでは、多くの弱参照を使用しましたが、そのような警告は表示されませんでした。他のクラスとの唯一の違いは、このクラスはc ++オブジェクトを使用し、プロジェクトをコンパイルできないため、.mmファイルに実装されていることです。 .mのままにしておくと
私はコードがうまく機能しているようだと言わなければなりません。
なにか提案を?

4

2 に答える 2

4

この同じ警告に直面して、次の方法で __block 属性を使用して非表示にします。

__block __weak MyViewController* weakSelf = self;
于 2013-11-01T12:58:26.503 に答える
0

指定できないと警告が表示される理由がわかりません__weak__weak私の知る限り、自動変数に使用するのは非常に危険ですが、指定できるはずです。

Apple のドキュメントでは、コンパイラは警告を表示すると述べていますが、実際の警告テキストは、属性を使用すると危険であるだけでなく、属性が無視されることを暗示しているようですが、ドキュメントは危険であるが機能することを暗示しているようです期待どおりです(何を期待するかを本当に理解している場合)。

警告テキストが不適切であるかどうか、またはドキュメントが正しく更新されていないかどうかを確認するために、いくつかの実験を行う必要があります。

于 2012-08-23T10:13:25.703 に答える