@synthesize与使用自我

我是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 ,因此我很好奇。

谢谢。

你不再需要明确地使用@synthesize属性。 如果你的教授正在使用它,那只是为了清楚地表明发生了什么。

如果您的属性是在.h文件中定义的,则会自动生成访问器,变体和实例variables。 如果你显式地@synthesize这些属性,它们可以通过指令之后提供的任何ivar名称来访问。 如果未使用@synthesize ,则自动生成的ivars可通过_somePropertyName

在你的例子中,使用@synthesize ,可以通过实例variablesmyResponse访问myResponse UILabel。 没有@synthesize ,可以通过_myResponse 。 在这两种情况下,都可以通过self.myResponse 。 最好的做法是在任何生命周期方法,访问器或增变器( -viewDidLoad-viewWillAppear-setMyResponse:等)中使用实例variables,并在所有其他方法中使用self.propertyName来清楚地区分类的属性实例variables。