Deklaruj właściwości w interfejsie .h lub w rozszerzeniu w pliku .m?

Czy w Objective-C najlepiej jest:

Zadeklaruj obiekty, takie jak przyciski w .h, a następnie syntezuj w .m

.h
@interface SomeViewController : UIViewController  
  @property (strong, nonatomic) UIButton *someButton;  
@end

.m
@implementation SomeViewController  
  @synthesize someButton = _someButton;  
@end

lub zadeklaruj je jako ivars w m

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

Zauważam, że w wielu kodach Apple, a konkretnie w ich przykładowym kodzie Breadcrumbs, wiele ich właściwości jest deklarowanych w interfejsie. Czy jest różnica między nimi? Zauważyłem też, że kiedy właściwości są deklarowane w@interface, są automatycznie syntetyzowane z prefiksem podkreślenia, dzięki czemusomeButton = _someButton synteza bezużyteczna.

questionAnswers(1)

yourAnswerToTheQuestion