1

Mac アプリ テンプレートで次のものが作成されていることに気付きました。

@interface AppDelegate : NSObject

@property (割り当て) IBOutlet NSWindow *window;

ARC ガイドラインによると、すべてのトップ レベル オブジェクトは strong プロパティを使用する必要がありますが、代わりにこれは assign プロパティを使用しています。誰かが理由を説明してくれますか?

4

1 に答える 1

2

通常、ウィンドウは によって「所有」されFile's Ownerます。これは通常、NSApplication(メイン nib の) インスタンスまたは のインスタンスでありNSWindowController、アプリ デリゲートまたはウィンドウ デリゲートである必要はありません。これが、参照がデリゲート クラス内で強力であることは適切ではない理由です。

Mac OS/X 10.7 では、NSWindow(他のいくつかの Cocoa クラスと同様に) ARC による管理がサポートされNSWindowていなかったため、宣言されたプロパティはorassignではなく. 詳細については、ARC への移行Nib オブジェクトのライフ サイクルに関するドキュメントを参照してください。基本的な答えは、およびメソッドをオーバーライドするオブジェクトに対して ARC 管理の参照を使用できないということです。strongweakreleaseretain

assign10.8では、NSWindow はそのリストにないように見えますが、Xcode はweak.

于 2013-02-23T22:29:25.957 に答える