Как я предполагал, это должно работать нормально для неизменяемого объекта в ARC:
- (id) copyWithZone:(NSZone *)zone {
return self;
}
Но если мне нужна глубокая копия, я должен написать что-то вроде этого:
- (id) copyWithZone:(NSZone *)zone {
Immutable *copy = [[Immutable alloc] initWithStr:str];
return copy;
}
Итак, если я правильно предположил, ARC поймет ситуацию (1) и (2) и примет правильное решение о «+1» для ссылок.
Я прав?