<分区>
它们之间有什么区别?
@interface { id value )
,没有@property
。
<@interface { id value )
,@property id value;
and@synthesis value;
中的@interface (/* */)
,@implementation
id值
@interface (/* */)
,id value
out of@implementation
其他的,如果你觉得其他的好榜样
提前致谢..
标签 iphone objective-c ios
<分区>
它们之间有什么区别?
@interface { id value )
,没有@property
。
@interface { id value )
, @property id value;
and @synthesis value;
@interface (/* */)
, @implementation
id值
@interface (/* */)
, id value
out of @implementation
其他的,如果你觉得其他的好榜样
提前致谢..
最佳答案
没有编译器生成的访问器的实例变量。可以直接从类中访问,只有打破封装才能从外部访问(foo->value
)。
常规类属性(= 带访问器的实例变量)。可以从类中访问,也可以使用访问器从外部访问,可以直接从类中访问。
如果您的意思是@implementation {id value;}
,这是一个私有(private)实例变量。与 (1) 非常相似,只有变量从公共(public) header 中隐藏。这是最近添加的 AFAIK。
不是类变量,由所有实例共享。
还有一种选择,在实现文件中声明私有(private)类属性:
@interface YourClass ()
@property(retain) id foo;
@end
@implementation YourClass
@synthesize foo;
@end
这为您提供了很好的编译器生成的访问器,而无需在公共(public) header 中公开变量。总结一下,我通常对公共(public)内容使用常规属性(编号 2),对私有(private)内容使用类扩展(编号 5)中声明的属性。
关于iphone - 下面的属性声明有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7466954/
相关文章:
iphone - 我们能否跟踪用户在 iPhone 上使用所有其他应用程序的时间?
iphone - 如何检测两根手指在 iPhone 上的敲击?
iphone - UITextField - 在输入第一个字符后添加一个字符
ios - UITableViewCell 标签显示有小的向上滑动动画
php - 如何通过 PHP Web 服务器 URL 传递数组?
objective-c - 我是否需要释放由 CFUUIDCreateString() 创建的 NSString?
objective-c - NSDataDetector - 仅解析时间时移动时区(无 mm/dd/yyyy)