21

ここで読んでいるように、ほとんどの場合、aIBOutletは弱いはずです。

開発ライブラリで読むことができるように、すべてのクラスが弱参照をサポートしているわけではありません。(例:NSTextView)。これは、assignを使用する必要があることを意味します。

@property (assign) IBOutlet NSTextView *textView;

弱参照を使用すると、次のエラーが発生します。「__ weakオブジェクトのivarの合成が必要なため、weak-unavailableプロパティの合成は許可されていません」

deallocドキュメントで言及されていなかったのは、たとえばメソッドによって使用された後、プロパティを再びnilに設定する必要があるということです。

- (void)dealloc
{
    self.textView = nil;
} 

マークされたクラスが弱参照をサポートしていないことを理解している限り、NS_AUTOMATED_REFCOUNT_WEAK_UNAVAILABLEその理由は何ですか?

4

1 に答える 1

13

一部のクラスが弱参照をサポートしない理由を見つけたと思います。

あなたがここで読むことができるように:

理論的根拠:歴史的に、クラスが保持、解放などをオーバーライドすることによって独自の参照カウント実装を提供することは可能でした。ただし、オブジェクトへの弱い参照は、とりわけ弱いため、クラスの参照カウント実装との調整が必要です。ロードとストアは、最終リリースに関してアトミックである必要があります。したがって、既存のカスタム参照カウントの実装は、通常、追加の作業なしでは弱参照をサポートしません。これは、バイナリ互換性を損なうことなく避けられません。

于 2012-10-14T13:32:29.473 に答える