Apple Developer Connection
Advanced Search
Member Login Log In | Not a Member? Contact ADC

< Previous PageNext Page >

デリゲート、オブザーバ、ターゲットの所有権

委任元のオブジェクトは、デリゲートおよびデータソースは所有しないものと見なされています。同様に、コントロールとセルはターゲットを所有せず、通知センターは通知のオブザーバを所有しないものと見なされています。その結果、これらのフレームワークオブジェクトは、ターゲット、オブザーバ、デリゲート、データソースを「保持しない」という規約に従っており、代わりに、それらに対する弱い参照を維持しています。つまりオブジェクトへのポインタを格納しています。

オブジェクトの所有権に関するポリシーでは、所有対象オブジェクトを、無条件で保持およびアーカイブすることが推奨され、参照している(所有していない)オブジェクトは保持せずに、条件に応じてアーカイブすることが推奨されています。この所有権に関するポリシーの実用上の目的は、循環参照、つまり2つのオブジェクトが相互に保持し合っている状況を避けることです。オブジェクトを保持することにより強い参照が作成され、強い参照がすべて解放されるまではオブジェクトの割り当てを解除することができません。2つのオブジェクトが相互に保持し合っていると、オブジェクト間の接続を絶つことができないため、オブジェクトの割り当てを解除できなくなります。

Cocoaフレームワーククラスのサブクラスを作成し、デリゲート、データソース、オブザーバ、ターゲットを使用する場合は、サブクラス内のオブジェクトを明示的に保持するべきではありません。オブジェクトへの弱い参照を作成して、条件に応じてアーカイブする必要があります。

参考資料: 所有権に関するポリシー、弱い参照、循環参照の詳細については、『Memory Management Programming Guide for Cocoa』の「Object Ownership and Disposal」を参照してください。



< Previous PageNext Page >


Last updated: 2006-05-23




Did this document help you?
Yes: Tell us what works for you.

It’s good, but: Report typos, inaccuracies, and so forth.

It wasn’t helpful: Tell us what would have helped.
Get information on Apple products.
Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Copyright © 2007 Apple Inc.
All rights reserved. | Terms of use | Privacy Notice