2011-04-05 75 views
0

我在摆弄Apple的AVCamDemo。除了试图解决所有这些问题之外,我遇到了一些我不明白的问题。AVFoundation - 财产申报 - 基本问题

属性以非常奇怪的方式初始化,我没有找到任何解释。

在头文件

AVCaptureSession *_session; 

... 

@property (nonatomic,readonly,retain) AVCaptureSession *session; 
中的.m文件

@synthesize session = _session; 

做什么用下划线故事

???

感谢您的任何澄清!

回答

2

基本上,你有两件事情在这里。一个ivar(实例变量)和属性。

  • ivar是实际变量。
  • 该属性是getter和setter的语法糖。

如果你

@synthesize session; 

伊娃和财产被假定为有编译器相同的名称。

如果你

@synthesize session = _session; 

那么属性名称是session和伊娃名字是_session。我的意见: 我一直在做可可超过十年。和@synthesize session = _session;是更安全的方式。编译器或程序员偶尔会遇到困惑,因为伊娃和这个属性有相同的名字。

1

下划线是一种命名约定,用于区分属性和实例变量。

特别是,它有助于区分属性的分配(自动减少并增加引用计数)和赋值实例变量(不包括自动引用计数更新)。

+0

感谢您的澄清! – Swissdude 2011-04-05 17:25:38