をあなたのケースを実行しました。 rypress
保持属性:retain属性は、強力なManual Retain Releaseバージョンであり、割り当てられた値の所有権を主張するのとまったく同じ効果を持ちます。 Automatic Reference Counted環境では使用しないでください。
コピー属性:コピー属性はstrongの代わりです。既存のオブジェクトの所有権を取得する代わりに、プロパティに割り当てられたもののコピーを作成し、その所有権を取得します。 NSCopyingプロトコルに準拠しているオブジェクトだけがこの属性を使用できます。
でも、私はstackoverflowの良いリンクも行っていました。 Joshua Nozzi's answerは、保持対コピーについてよく説明しました。
はコピー対保持 - 宣言されたプロパティを使用して、デフォルトで保持(あなたは単にそれを完全に省略することができます)と別のオブジェクトがプロパティに割り当てられているか、それがnilに設定されていますかどうか、自動的にオブジェクトの参照カウントを管理します。コピーを使用すると、新しく割り当てられたオブジェクトを自動的に送信します(渡されたオブジェクトのコピーを作成し、そのコピーをプロパティに割り当てる代わりに、割り当てられたオブジェクトが変更される可能性がある場合もありますいくつかの他のオブジェクトのプロパティとして設定(その変更を意味するだろう/突然変異は、同様の特性に適用される)
がまた良い例hereを見つけ
コード:。。
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"
)
2013-12-19 17:15:49.380 RetainVsCopy[2876:c07] Retained Array = (
First,
Second,
"Retained Third"
)
2013-12-19 17:15:49.381 RetainVsCopy[2876:c07] Copied Array = (
First,
Second,
"Copied Third"
)
配列と保持された配列の両方が同じ内容を持っています。これは、両方とも同じメモリ/インスタンス/オブジェクトを指しているためです。 Copied Arrayの内容が異なる場合。これは、コピーが別のインスタンスを作成したためです。
これを確認してください:http:// stackoverflow。com/a/7855536/4831524 –
このリンクを確認する、http://stackoverflow.com/questions/2255861/property-and-retain-assign-copy-nonatomic-in-objective-c http://stackoverflow.com/a/15541801/4294543 –
@iamhxさんはストーリーボードに識別子を指定しましたか? –