Я не проверил это специально, но по соглашению эти виды функций возвращают автоматически выпущенные объекты. Возможно, вы сможете проверить это самостоятельно, настроив минимальный, не ARC-проект и вызвав -retainCount
на том, что вы получаете из функции, но я не уверен. (И вообще, retainCount
не то, что вы хотите использовать.)
Да. Синтезированный сеттер выглядит примерно так:
- (void)setSomeString:(NSString *)string
{
if (string != someString) {
[someString release];
}
someString = [string retain];
}
Таким образом, независимо от того, вызываете ли вы его явно или с помощью точечной нотации, старое значение освобождается (и для базового значения ивара устанавливается значение nil
или что бы вы ни передавали).
Кроме того, я не уверен, что вы просто делали это для случайного примера, но вам не нужно переносить строковый литерал в код управления памятью, чтобы передать его в средство доступа к свойству. (То есть self.someString = @"Something"
в порядке.)