Синтаксис свойства: получаю ли я доступ к ivar напрямую или через геттер / сеттер? - PullRequest
1 голос
/ 03 июля 2011

Я новичок в Objective-C и немного озадачен тем, к чему я обращаюсь при вызове свойства различными способами в коде.

// MyClass.h
@interface MyClass : NSObject {
}
@property ( nonatomic, retain ) NSString *name;

@end

//MyClass.m
#import "MyClass.h"

@implementation MyClass
@synthesize name;
// other code...
@end

Мне неясно, получаю ли я доступ к поддерживающему ивару или иду через геттер и сеттер, используя следующий синтаксис (я включу мои предположения относительно того, что, по моему мнению, он делает):

  • name = @"Geoff"; это происходит через установщик свойств или непосредственно настраивает ivar?
  • self.name = @"Geoff"; проходит через сеттер
  • self->name = @"Geoff;" прямой доступ к ивару
  • [ name release ]; это доступ к ивуру напрямую или через геттер?

Я знаю, что это можно устранить неоднозначно, установив значение ivar в операторе синтеза, например: @synthesize name=_name, как это делается во многих шаблонах IOS XCode 4.

1 Ответ

1 голос
/ 03 июля 2011
  • name = @"Geoff"; устанавливает ивар напрямую.
  • [ name release ]; напрямую обращается к ивару.

Если вы не видите self. и выВы не вызываете метод для получения или установки переменной, тогда вы обращаетесь к ivar.

Подробнее см. Язык программирования Objective-C .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...