This repository has been archived by the owner on Jun 20, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 336
1.2 メモリ管理
Koya Tamura edited this page Sep 30, 2013
·
19 revisions
メモリ管理の考え方と ARC MemoryMgmt
Advanced Memory Management Programming Guide から引用
Objective-C ではインスタンスへの参照回数が 1 以上であればメモリ領域が確保され続けインスタンスは生存し続けます。
ARC では上記の retain, release はコンパイラが自動で補完してくれます。よって、書くとエラーが出てビルド出来ません。
参照には 強参照 と 弱参照 があります。
参照先のオブジェクトのオーナーシップを持つ。自分がそのオブジェクトの参照を無くすまで確実に参照することができる。デフォルトこの設定
参照先のオブジェクトのオーナーシップを持たない。そのオブジェクトが破棄されたら参照できなくなる。delegate や blocks 使うときに主に使用
二つのオブジェクト間で相互に強参照を持つと循環参照が起き、解放されないオブジェクトがうまれる。
この場合、片方の参照を弱参照にして回避します。
{
// MixiParentObject インスタンスへの強参照を parentObj が所持
MixiParentObject *parentObj = [[MixiParentObject alloc] init];
// MixiChildObject インスタンスへの強参照を childObj が所持
MixiChildObject *childObj = [[MixiChildObject alloc] init];
// MixiParentObject インスタンスのインスタンス変数が childObj への強参照を保持
parentObj.obj = childObj;
// MixiChildObject インスタンスのインスタンス変数が parentObj への強参照を保持
childObj.obj = parentObj;
//parentObj のスコープを超えるので、parentObj が MixiParentObject インスタンスへの参照を解除(解放)
//childObj のスコープを超えるので、childObj が MixiChildObject インスタンスを解放
// parentObj.obj が MixiChildObject インスタンスの強参照を保持
// childObj.obj が MixiParentObject インスタンスの強参照を保持
}
はじめに
-
導入
-
1.3 UIViewController1 UIViewController のカスタマイズ(xib, autoresizing)
-
UIKit 1 - container, rotate-
-
UIKit 2- UIView -
-
UIKit 3 - table view -
-
UIKit 4 - image and text -
-
ネットワーク処理
-
ローカルキャッシュと通知
-
Blocks, GCD
-
設計とデザインパターン
-
開発ツール
-
テスト
-
In-App Purchase
-
付録