Objective C中有两种方法来声明实例variables吗?

在大多数教程中,声明实例variables的方法是将其放入.h中

@interface myViewController: UIViewController { UITextField *myTextField; } @property (nonatomic, retain) IBOutlet UITextField *myTextField; 

和.m

 @implementation myViewController @synthetize myTextField; 

但在这个斯坦福大学的课程http://itunes.apple.com/itunes-u/ipad-iphone-application-development/id480479762这样做的方式是

在.h中只做:

 @interface myViewController: UIViewController @property (nonatomic, retain) IBOutlet UITextField *myTextField; 

在.m中这样做:

 @synthetize myTextField = _myTextField; 

他们是否等同? 是iOS5特有的第二种方法吗?

它们在function上是等同的。 在ObjC 2.0中,如果不指定synthesize语句的一部分, synthesize关键字将自动创build关联的伊娃。 所有现代运行时都具有此function。

它们都以相同的方式工作,最后一个实际上有一个名为_myTextField的实例variables。 我不知道这个“function”何时开始,并且知道该variables是否被编译器或预编译器插入是很有趣的。

在第一个变体中,你可以在第二个变体中的debugging器中看到param的值,在debugging模式下你看不到param的值