Объявить свойства в.h интерфейсе или в расширении.m файла?

В Objective-C лучше всего будет:

  1. Объявите объекты, такие как кнопки в.h, а затем синтезируйте в.m

    .h
    @interface SomeViewController : UIViewController  
      @property (strong, nonatomic) UIButton *someButton;  
    @end
    
    .m
    @implementation SomeViewController  
      @synthesize someButton = _someButton;  
    @end
    
  2. или объявить их как ивары в.m

    @interface SomeViewController ()  
      @property (strong, nonatomic) UIButton *someButton;  
    @end  
    

Я заметил, что во многих кодах Apple, в частности, в примере кода Breadcrumbs, многие их свойства объявлены в интерфейсе. Есть ли разница между ними? Я также заметил, что когда свойства объявлены в @interfaceони автоматически синтезируются с префиксом подчеркивания, что делает someButton = _someButton синтез бесполезный.

1 ответ

Решение

Во-первых, с Xcode 4.4 больше нет необходимости @synthesize(если только вы не измените метод установки и метод получения), либо когда @property объявлен в @interface или же @implementation,

Если @property доступ только из класса, а затем объявить @property в расширении класса в.m файле. Это обеспечивает инкапсуляцию и позволяет легко увидеть, что @property не используется из другого класса.

Если @property используется другими классами, дизайн, а затем определить его в @interface в.h файле.

Другие вопросы по тегам