質問

世界のマニュアルメモリの割り当ておよびポインタがルール(Borland Delphi)が必要で、一般的な溶液かしいと思います一般的な問題

れた瞬間にオブジェクト参照が可能ですのでから複数の場所(リスト、その他の物,...).いい方法はありませんかるすべてのこれらの参考文献ができるように更新してのオブジェクトです。

役に立ちましたか?

解決

したい場合に通知その他の変動きを実施 "オブザーバーパターン".Delphiは生きていまTComponentの子孫に当たります。話ができるTComponent.FreeNotification方法としてオブジェクトをした場合、その他のコンポーネントが破壊されました。なることを呼び出しの通知方法です。削除ができます自分で通知リストからの呼び出TComponent.RemoveFreeNotification.も このページ.

最もゴミの収集なお一覧を取得しの参考ないように助けます。Delphiできるリファレンスカウンターをご利用になる場合は界面が再度必要なものを参照す。

他のヒント

できないかって、なぜそうしたいのではないかと思います。るでしょうかチェックを参考にはNilを使用する前にですか?

Anwyays、二つの可能性に思えているのかを理解すること:

  1. て物体の長自らの参照が可能となります。
  2. 作リファレンスカウンターマネージャクラス。

のように追加AddRef()およびReleaseRef()機能は、管理責任者または参照います。を利用できますこれらをどのように多くの参照が存在しである。COMではこのようになっております.

参考慮しい管理のみでの参照カウント。この地図にポインタの整数をカウントするための.

お持ちの方の参照オブジェクトでクリアすることができますその参照の場合、オブジェクトが破壊されやすいの場となっております。を破壊するオブジェクト?

場合には後者のそうじんまりとしたごみがございます。私は初めDelphiいないわからない場合がありGCsで利用できるが、今後は、それは驚くべありません.

る方の場合はそのGC違うと思うんです。場合はデポOOP/継承関係を持つ(かんが)なにができるのもこのような(擬似コード):

// Anything that will use one of your tracked objects implements this interface
interface ITrackedObjectUser {
  public void objectDestroyed(TrackedObject o);
}

// All objects you want to track extends this class
class TrackedObject {
  private List<ITrackedObjectUser> users;

  public void registerRef(ITrackedObjectUser u) {
    users.add(u);
  }

  public void destroy() {
    foreach(ITrackedObjectUser u in users) {
      u.objectDestroyed(this);
    }
  }
}

基本的には、ときに追加の追跡オブジェコレクションが集うに自身を登録するオブジェクトです。のオブジェクトが取り壊されている(図んコdestroy()をオブジェクトのデストラクタはオブジェクト信号、コレクションで取り壊されているので、コレクション展では何でもやる"ということでニーズはます。

残念ながら、このようになっていソリューションを利用する場合は、出ョンにします。い書コレクションオブジェクト(様でラップをいう。で必要にしていることの確認登録が随所にしたいトラックのオブジェクトです。なので私が考えら嬉しい"ソリューションにも小さい事はなかったと思いきいと言えるでしょう。私の主たちは、この考えを産卵その他のアイデア。:)

ある特定の理由にしたい。ありませ問題とローグのポインタ、または考えていますかですが、問題の一つです。

まぁですということではありませんれば、問題はデザインのご応募権は、適切なパターンもお手伝いさせていただきます。

一部の情報patters:

http://delphi.about.com/od/oopindelphi/a/aa010201a.htm

http://www.obsof.com/delphi_tips/pattern.html

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top