私が書く場合:
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.
autoreleasewhile second はd オブジェクトを解放します。
ARC では、autoreleased はコンパイラによって配置されます。
利点: arrayWithObjects:簡潔であり、追加のメソッド呼び出しを 1 つ必要としません。
最初のステートメントでは、生成されたインスタンスの所有者です (したがって、 を使用しない場合は、それを解放する責任もありますARC) が、他のステートメントではそうではありません (配列は自動的に解放されます)。(舞台裏でallocandinitは実装によって呼び出されNSArrayます)