私が書く場合:
NSArray *arr=[[NSArray alloc]initWithObjects:@"Liza", @"Lipi", @"Rose"];
NSArray *arr=[NSArray arrayWithObjects:@"Liza", @"Lipi", @"Rose"];
どちらのステートメントも同じことを行います。では、これら 2 つのステートメントの違いは何ですか? また、一方を使用する利点は何ですか?
私が書く場合:
NSArray *arr=[[NSArray alloc]initWithObjects:@"Liza", @"Lipi", @"Rose"];
NSArray *arr=[NSArray arrayWithObjects:@"Liza", @"Lipi", @"Rose"];
どちらのステートメントも同じことを行います。では、これら 2 つのステートメントの違いは何ですか? また、一方を使用する利点は何ですか?
昔は...最初のものを使用した場合release
、arr
.
autorelease
while second はd オブジェクトを解放します。
ARC では、autoreleased はコンパイラによって配置されます。
利点: arrayWithObjects:
簡潔であり、追加のメソッド呼び出しを 1 つ必要としません。
最初のステートメントでは、生成されたインスタンスの所有者です (したがって、 を使用しない場合は、それを解放する責任もありますARC
) が、他のステートメントではそうではありません (配列は自動的に解放されます)。(舞台裏でalloc
andinit
は実装によって呼び出されNSArray
ます)