@synthesize与使用自我

时间:2014-01-25 20:14:05

标签: ios properties

我是iOS的新手,并且从教程和我的教授那里学习 在我们的.h文件中:

@interface ViewController : UIViewController <UITextFieldDelegate>

@property (strong, nonatomic) IBOutlet UILabel *myResponse;
@property (strong, nonatomic) IBOutlet UITextField *myInput;

@end

在我们的.m文件中:

@sysnthesize myResponse
@synthesize myInput

我的问题是:在.m文件中添加@synthesize然后使用[myInput <do something here>]等属性与消除@synthesize之间的区别有什么不同使用[self.myInput <do something here>]。我在Xcode 5上运行,所以我知道我有自动合成功能,但两者之间是否有更微妙的区别?

我的教授使用了@synthesize,而我正在使用的教程只是使用self.propertyName,因此我很好奇。

感谢。

1 个答案:

答案 0 :(得分:5)

您不再需要明确使用@synthesize作为属性。如果你的教授正在使用它,那只是要明确并展示在幕后发生的事情。

如果您的属性在.h文件中定义,则会自动生成访问器,更改器和实例变量。如果您明确@synthesize这些属性,则可以通过指令后提供的任何ivar名称访问它们。如果未使用@synthesize,则可以通过_somePropertyName自动生成的ivars。

在您的示例中,使用@synthesize,可以通过实例变量myResponse访问myResponse UILabel。如果没有@synthesize,则可以通过_myResponse获取。在这两种情况下,都可以通过self.myResponse获得。最佳实践是在任何生命周期方法,访问器或更改器(-viewDidLoad-viewWillAppear-setMyResponse:等)中使用实例变量,并在所有其他方法中使用self.propertyName清楚地区分类的属性和实例变量。