コース: Objective-C 基本講座

今すぐコースを受講しましょう

今すぐ登録して、23,200件以上登録されている、業界エキスパート指導のコースを受講しましょう。

オブジェクトの生涯を理解する

オブジェクトの生涯を理解する - Objective-Cのチュートリアル

コース: Objective-C 基本講座

オブジェクトの生涯を理解する

このレッスンでは作成されたオブジェクトが いつ片付けられるのかを学習してください もしオブジェクトの初期化時にmalloc などを使って記憶区画を確保した場合は そのオブジェクトが片付けられる時に 一緒に片付るようにしてください そのためにはディアロックメソッドを オーバーライドします ディアロックメソッドは オブジェクトがメモリーから片付けられる 直前に呼ばれるメソッドです ちゃんと呼ばれるか実際に実験してみましょう Xcode の画面に切り替えます ここではイベントクラスの init オーバーラードして 初期化時にmalloc で ヒープから記憶区画を確保しています そしてディアロックメソッドをオ-バーライド して初期化時に確保した記憶区画を フリーで解放しています ちなみにオブジェクトが NULL を戻したといった イニシャライザーで取り返しのつかない 失敗をした場合はself にnill を 入れてリターンするようにします nill は無効なオブジェクトを意味します またnill にメッセージを送っても 何も反応しないように ObjectC 側で保証してくれてもいます 呼ばれたことを確認できるようにコンソールに メモリーから消えますと出力させています super にディアロックメソッドを 送る必要はありません super 側はこの後で説明する ARC という機構によって 自動的に呼ばれます そもそも記述しようとするとエラーになります メインでやっていることは 作成とメッセージを送る作業です ランさせるとコンソールに出力されます 確かにディアロックメソッドが呼ばれている ようですが作成したインスタンスを 片付ける記述もないのに なぜインスタンスが片付けられたのでしょうか 解説画面に戻ります これにはARC と呼ばれる 不要なオブジェクトを 自動的に片付ける機構が関係します ARC は オブジェクトの参照数が0 になった時 そのオブジェクトが不要になったと判断し メモリから片付けるようになっています ARC が動作していることはブレースペアで 局所スコープを作れば簡単に検証できます まずブレースペア内で宣言された イベントインスタンス参照用のイベントは ブレースを抜けるまでは利用可能ですが ブレースを抜ければ利用できません この時点でイベントインスタンスを…

目次