Объявление переменных в расширении класса (анонимная категория) против реализации

Я видел десятки людей, использующих подобные объявления в своих файлах реализации:

@interface ViewController ()<UIPickerViewDataSource,UIPickerViewDelegate>

@implementation ViewController
{
  UIPopoverController *popoverController;
      NSString *currentPick;
    ….
}

Это хороший способ или я должен определить свойства в расширении класса следующим образом:

@interface ViewController ()
{
  @property (nonatomic, strong) UIPopoverController *popoverController;
  @property (nonatomic, strong) NSString *currentPick;
    ….
}
@implementation ViewController
@synthesize popoverController;
@synthesize currentPick;
...

Я немного смущен в этом случае.

Заранее спасибо.


person Moonstar    schedule 16.04.2014    source источник
comment
Да, извините, меня смутило то, что я услышал переменную instace из Java, поскольку при переводе на термины target-c свойства были бы переменными экземпляра, а в target-c они явно не таковы. Преимущество заключается в том, что определение свойств в расширениях класса заключается в том, что вы можете автоматически устанавливать методы получения и/или установки.   -  person Moonstar    schedule 16.04.2014
comment
Связано: Где разместить ивары в современном ObjC?   -  person jscs    schedule 16.04.2014


Ответы (1)


Свойство и переменная экземпляра

Лучший способ — объявить свойства в расширениях вашего класса.

person Moonstar    schedule 16.04.2014