Неизменяемый объект Objective-C copyWithZone: ARC-совместимая реализация

Как я предполагал, это должно работать нормально для неизменяемого объекта в ARC:

- (id) copyWithZone:(NSZone *)zone {
    return self;
}

Но если мне нужна глубокая копия, я должен написать что-то вроде этого:

- (id) copyWithZone:(NSZone *)zone {
    Immutable *copy = [[Immutable alloc] initWithStr:str];
    return copy;
}

Итак, если я правильно предположил, ARC поймет ситуацию (1) и (2) и примет правильное решение о «+1» для ссылок.

Я прав?

12
задан Brad Larson 6 February 2012 в 17:45
поделиться