在Objective-C中,最佳做法是:
在.h中声明诸如按钮之类的对象,然后在.m
中进行合成.h
@interface SomeViewController : UIViewController
@property (strong, nonatomic) UIButton *someButton;
@end
.m
@implementation SomeViewController
@synthesize someButton = _someButton;
@end
或在.m
中将它们声明为ivars@interface SomeViewController ()
@property (strong, nonatomic) UIButton *someButton;
@end
我注意到在许多Apple代码中,特别是他们的Breadcrumbs示例代码,他们的许多属性都在界面中声明。这两者有区别吗?我还注意到,当在@interface
中声明属性时,它们会自动用下划线前缀合成,使someButton = _someButton
综合无效。
答案 0 :(得分:32)
首先,as of Xcode 4.4不再需要@synthesize
(除非您同时更改了setter和getter方法),或者@property
在@interface
中声明}或@implementation
。
如果仅从类中访问@property
,则在.m文件中的class extension中声明@property
。这提供了封装,并且很容易看到@property
未被其他类使用。
如果其他类按照设计使用@property
,则在.h文件的@interface
中定义它。