Объявить свойства в.h интерфейсе или в расширении.m файла?
В Objective-C лучше всего будет:
Объявите объекты, такие как кнопки в.h, а затем синтезируйте в.m
.h @interface SomeViewController : UIViewController @property (strong, nonatomic) UIButton *someButton; @end .m @implementation SomeViewController @synthesize someButton = _someButton; @end
или объявить их как ивары в.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 файле.