Objective Cは初めてです。ポインターの概念を含め、Cの基本的な知識があります。 2つの基本的な質問があります。
変更されたドキュメントの更新された回答
この情報は、ドキュメント内のいくつかのガイドに広がっています。必要な読み物のリストは次のとおりです。
この質問に対する答えは、ARC管理アプリケーション(新しいプロジェクトの最新のデフォルト)を使用しているか、手動メモリ管理を強制しているかによって完全に異なります。
Assign vs. Weak-assignを使用して、プロパティのポインタをオブジェクトを保持またはキュレートせずにオブジェクトのアドレス。 weakを使用して、割り当てられたオブジェクトの割り当てが解除された場合、プロパティが自動的にnilを指すようにします。ほとんどの場合、weakを使用するので、割り当て解除されたオブジェクトにアクセスしようとはしません(メモリアドレスの不正アクセス-"EXC_BAD_ACCESS
")適切なクリーンアップを実行しない場合。
Retain vs.Copy-宣言されたプロパティはデフォルトでretainを使用します単に省略できます)、プロパティに別のオブジェクトが割り当てられているか、nilに設定されているかにかかわらず、オブジェクトの参照カウントを自動的に管理します。 copyを使用して、新しく割り当てられたオブジェクトに-copy
メッセージ(渡されたオブジェクトのコピーを作成し、そのコピーを代わりにプロパティに割り当てます-割り当てられたオブジェクトが他のオブジェクトのプロパティとして設定された後に変更される可能性がある状況でも便利です修正/突然変異がプロパティにも適用されることを意味します)。
IOSリファレンスライブラリの メモリ管理プログラミングガイド には、割り当てとコピーの基本があり、類推と例があります。
copyオブジェクトのコピーを作成し、保持カウント1で返します。オブジェクトをコピーする場合、そのコピーを所有します。これは、「コピー」が返されるオブジェクトを指すWordコピーを含むすべてのメソッドに適用されます。
retainオブジェクトの保持カウントを1増やします。オブジェクトの所有権を取得します。
releaseオブジェクトの保持カウントを1減らします。オブジェクトの所有権を放棄します。
NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:@"First",@"Second", nil];
NSMutableArray *copiedArray = [array mutableCopy];
NSMutableArray *retainedArray = [array retain];
[retainedArray addObject:@"Retained Third"];
[copiedArray addObject:@"Copied Third"];
NSLog(@"array = %@",array);
NSLog(@"Retained Array = %@",retainedArray);
NSLog(@"Copied Array = %@",copiedArray);
array = (
First,
Second,
"Retained Third"
)
Retained Array = (
First,
Second,
"Retained Third"
)
Copied Array = (
First,
Second,
"Copied Third"
)
割り当てます
コピー:
保持する: