Недвижимость против Ивара во времена дуги
Я понимаю, что установка ivar теперь сохраняет объект, назначенный ему, так как установка переменных по умолчанию для strong
квалификатор. Потому что ивары находятся в области объекта, в котором они объявлены и strong
сохраняет объекты в пределах переменной, это означает, что значение ivars никогда не будет освобождено, пока объект, содержащий ivar, все еще жив.
это правильно?
Если да, то я прав, думая, что есть, в терминах управления памятью, нет разницы между сохранением (сильным) свойством и простым ivar больше?
2 ответа:
если переменная:
- объявляется в классе с помощью ARC.
- используется исключительно для реализации класса (не отображается как часть интерфейса класса).
- не требуется код.
- не требует каких-либо пользовательских геттер/сеттер.
тогда уместно объявить его как Ивар без соответствующего
@property
/@synthesize
, и ссылаться на него непосредственно в пределах реализация. Он встроен в инкапсуляция чтобы объявить этот ivar в файле реализации класса.// MyClass.h @interface MyClass : ParentClass @end // MyClass.m @implementation MyClass { NSString *myString; } - (void)myMethod { myString = @"I'm setting my ivar directly"; } @end
- этот Ивар будет рассматриваться как
__strong
компилятором ARC.- он будет инициализирован к
nil
если это объект, или0
если это примитивно.
вы не можете использовать код и делают пользовательские геттеры и сеттеры с переменными экземпляра, кроме того, что они очень похожи при использовании ARC.