Переменные экземпляра iOS 5 - PullRequest
14 голосов
/ 15 октября 2011

Я немного смущен тем, как работает ARC, я знаю, что есть автоматический подсчет ссылок, но работает ли эта функция даже для назначения необработанных переменных экземпляра (без использования свойств).

Например, если яесть переменная экземпляра arr:

@interface TestClass : NSObject {
   NSArray *arr;
}

Теперь, если внутри метода я назначаю это с помощью автоматически выпущенного NSArray:

- (IBAction)test {
    arr = [NSArray arrayWithObject:@"TEST"];
 }

Что происходит с этим массивом?Он просто волшебным образом хранит его, пока arr не будет переназначен на что-то другое?

Теперь, если я сделаю что-то вроде:

self.arr = [NSArray arrayWithObject:@"TEST"];

Что произойдет, если оно будет сильным против слабого?

1 Ответ

18 голосов
/ 15 октября 2011

Да, ARC работает с необработанным доступом к ivar.Как и локальные переменные, ивары неявно __strong, если они не украшены __weak или __unsafe_unretained.Следовательно, по умолчанию они будут действовать как свойство, помеченное strong (или retain, что в ARC является синонимом strong).

...