以下のような基本的なメモリ管理の問題があります。
NSString *someName = [NSString stringWithFormat:@"Chris"];
Person *p = [[Person alloc] init];
p.name = someName;
「名前」が「保持」に設定されている場合、「someName」は一度自動解放され、一度保持されることがわかっているため、「p.name」は NSString を 1 つの保持カウントで保持します。
しかし、「名前」がコピーに設定されている場合はどうでしょうか。「someName」は「p.name」に自分自身のコピーを渡しますが、そのコピーは自動解放されますよね?では、「someName」を明示的に保持する必要がありますか?