В средах, отличных от ARC, и self->ivar
, и ivar
не включают в себя вызовы Objective-C, а вместо этого устанавливают и получают скаляры из памяти. Точечный синтаксис (например, self.ivar
или [self setIvar:]
) вызывает Objective-C для метода установки / получения, который может управлять управлением памятью и т. Д. Apple @property включает в себя @synthesize, который пишет эти реализации методов для вас.
В средах ARC оба свойства и назначение ivar вручную включают некоторую логику управления памятью. Может даже случиться так, что в оптимизированных средах ARC использование @property просто использует встроенную логику ARC, вместо того, чтобы делать вызовы Objective-C всякий раз, когда это возможно.