Xcode 4.2の開発者向けプレビュー版をダウンロードしました。私はココアアプリケーションを作成しました。しかし、私はデリゲートクラスで非常に奇妙な構文を見つけました:"強い"キーワードは何ですか
@property (strong) IBOutlet NSWindow *window;
これはどういう意味ですか?コンパイラはコンパイルできません。
ありがとうございます!
Xcode 4.2の開発者向けプレビュー版をダウンロードしました。私はココアアプリケーションを作成しました。しかし、私はデリゲートクラスで非常に奇妙な構文を見つけました:"強い"キーワードは何ですか
@property (strong) IBOutlet NSWindow *window;
これはどういう意味ですか?コンパイラはコンパイルできません。
ありがとうございます!
これは、このプロパティが強い関係(所有権)であることを示しています。同じ文脈ではARCのretain
キーワードのバージョンです。
コンパイラはコンパイルできません。
これは有効なARCコードなので、ツールでARCをサポートしている場合は、確実にコンパイルできるはずです。
Xcode 4.2以降を使用していること、プロジェクトのコンパイラ選択肢をClang( "Apple LLVM Compiler")に設定していることを確認してください。
接線問題:開発者が "強い"と "弱い"参照を心配する必要がある場合、ARCはどのように "自動"ですか?彼らがやったことは、「保持」と「解放」を、それほど直感的ではないものに置き換えているようです。 – aroth
@aroth:あなたがする必要があるのは、プロパティが強いか弱い(またはコピーしている)かを宣言することだけです。その後は何もする必要はありません。つまり、deallocでオブジェクトを解放する必要はなく、インスタンス変数に代入するときは(強くても)保持する必要はなく、弱い参照を持つことができます参照されたオブジェクトが死ぬと自動的にnilに設定されます。 –
@aroth: 'stringWithFormat:'や 'alloc'や' initWithFormat: 'を使うかどうか心配する必要もありません。 ARCは、メモリ管理ルールを維持します。その結果、いずれも漏洩したりクラッシュすることはありません。 –
Strongは、新しいLLVMコンパイラ(リリース時にXcode 4.2の一部)に到着する自動参照カウント(ARC)を指します。現在、Xcode 4.2のプレビューはまだNDAの下にあります。developer accountにログインして開発者フォーラムに質問を投稿してください。
この記事を参考にしてください。weblog投稿
NDAのためにあなたには言い難いですが、あなたがDevプログラムに入っているので、Programming with ARC Release Notesを読んでください。脇に - これは私たちが素晴らしいことをすることができない理由です。 – Abizern
うわー - 私は '強い'についてオンラインで何かを見つけることができません。それはIBOutletsに関連しているように見えます。特に、それらが強いか弱いかは問われませんが、それは私が得たすべてに関するものです。コンパイラからどのようなエラーメッセージが表示されますか? –
@Chris Gregg:特にIBOutletsではありません。それはプロパティです。 ARCを紹介する(NDA'd)WWDC 2011セッションでは、それをカバーしています。おそらくNDAのドキュメントの少なくとも一部にもあるでしょう。 –