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的值