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