iphone - 下面的属性声明有什么区别?

标签 iphone objective-c ios

<分区>

它们之间有什么区别?

  1. @interface { id value ) ,没有@property

  2. @interface { id value ) , @property id value; and @synthesis value;

    <
  3. @interface (/* */) , @implementation

    中的id值
  4. @interface (/* */) , id value out of @implementation

  5. 其他的,如果你觉得其他的好榜样

提前致谢..

最佳答案

  1. 没有编译器生成的访问器的实例变量。可以直接从类中访问,只有打破封装才能从外部访问(foo->value)。

  2. 常规类属性(= 带访问器的实例变量)。可以从类中访问,也可以使用访问器从外部访问,可以直接从类中访问。

  3. 如果您的意思是@implementation {id value;},这是一个私有(private)实例变量。与 (1) 非常相似,只有变量从公共(public) header 中隐藏。这是最近添加的 AFAIK。

  4. 不是类变量,由所有实例共享。

还有一种选择,在实现文件中声明私有(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 传递数组?

ios - 按关键字过滤传入的短信(IOS\IPHONE)

objective-c - 我是否需要释放由 CFUUIDCreateString() 创建的 NSString?

objective-c - NSDataDetector - 仅解析时间时移动时区(无 mm/dd/yyyy)

iphone - 让对象在从 super View 中删除后发送自己的委托(delegate)消息

ios - 我应该在哪里添加 CALayers 到 UITableViewCell?