Mac アプリ テンプレートで次のものが作成されていることに気付きました。
@interface AppDelegate : NSObject
@property (割り当て) IBOutlet NSWindow *window;
ARC ガイドラインによると、すべてのトップ レベル オブジェクトは strong プロパティを使用する必要がありますが、代わりにこれは assign プロパティを使用しています。誰かが理由を説明してくれますか?
Mac アプリ テンプレートで次のものが作成されていることに気付きました。
@interface AppDelegate : NSObject
@property (割り当て) IBOutlet NSWindow *window;
ARC ガイドラインによると、すべてのトップ レベル オブジェクトは strong プロパティを使用する必要がありますが、代わりにこれは assign プロパティを使用しています。誰かが理由を説明してくれますか?
通常、ウィンドウは によって「所有」されFile's Owner
ます。これは通常、NSApplication
(メイン nib の) インスタンスまたは のインスタンスでありNSWindowController
、アプリ デリゲートまたはウィンドウ デリゲートである必要はありません。これが、参照がデリゲート クラス内で強力であることは適切ではない理由です。
Mac OS/X 10.7 では、NSWindow
(他のいくつかの Cocoa クラスと同様に) ARC による管理がサポートされNSWindow
ていなかったため、宣言されたプロパティはorassign
ではなく. 詳細については、ARC への移行とNib オブジェクトのライフ サイクルに関するドキュメントを参照してください。基本的な答えは、およびメソッドをオーバーライドするオブジェクトに対して ARC 管理の参照を使用できないということです。strong
weak
release
retain
assign
10.8では、NSWindow はそのリストにないように見えますが、Xcode はweak
.