在大多数教程中,声明实例变量的方法是将其放在.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?
答案 0 :(得分:2)
它们在功能上是等同的。在ObjC 2.0中,synthesize
关键字将自动创建关联的ivar,如果您未在synthesize
语句中指定一个。{1}}关键字。所有现代运行时都会出现此功能。
答案 1 :(得分:1)
它们都以相同的方式工作,在最后一个实际上你有一个名为_myTextField的实例变量。我不知道这个“功能”何时开始,并且知道变量是否由编译器或预编译器插入会很有趣......
答案 2 :(得分:1)
存在差异,在第一个变体中,您可以在调试器中看到param的值 在第二个变体中,您无法在调试模式下看到param的值