@synthesize与使用自我

Joh*_*ing -1 properties ios

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

@interface ViewController : UIViewController <UITextFieldDelegate>

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

@end
Run Code Online (Sandbox Code Playgroud)

.m我们的文件中:

@sysnthesize myResponse
@synthesize myInput
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢.

Hig*_*asy 5

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

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

在您的示例中,使用@synthesize,myResponse可以通过实例变量访问UILabel myResponse.没有它@synthesize,它可以通过_myResponse.在这两种情况下,都可以通过self.myResponse.这是最好的做法是使用实例变量的生命周期方法,存取,存取器或(-viewDidLoad,-viewWillAppear,-setMyResponse:等),并使用self.propertyName所有其他方法来明确从实例变量区分类的属性.