iOS中@property应该在.h还是.m文件中?

3

我知道其他类可以调用的方法应该在头文件中声明,但是当涉及到@property时,我有些困惑,不确定它应该在头文件还是实现文件中。你如何做出这个决定?这会造成什么影响?

2个回答

6
任何希望公开给其他类的属性都应该在.h文件中定义。'private'属性(双关语)应该被放到实现文件中的一个匿名类别或类扩展中。你也可以将.h版本的属性设置为只读,而将.m版本设置为可读写。

使用私有类别定义属性的实现文件示例

@interface CPClassFileName ()
@property (nonatomic, retain) NSString *string;
@end



@implementation
...
@end

4
这实际上是一个类扩展,而不是私有类别。重要的区别在于,类扩展中定义的方法必须在类的@implementation块中定义。在这种情况下,类扩展正是需要使用的东西。 - torrey.lyons

0
如果你想让其他类(或开发者)知道你的实例变量有访问器,就在头文件上使用@property。
换句话说: 如果你想要“公共”的getter/setter,就在头文件上使用@property。如果你想要它们是私有的,就在.m文件上使用@property。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接