我是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,因此我很好奇.
谢谢.
您不再需要明确@synthesize用于属性.如果你的教授正在使用它,那只是要明确并展示在幕后发生的事情.
如果您的属性在.h文件中定义,则会自动生成访问器,更改器和实例变量.如果您明确指出@synthesize这些属性,则可以通过指令后提供的任何ivar名称访问它们.如果@synthesize未使用,则可以通过自动生成的ivars _somePropertyName.
在您的示例中,使用@synthesize,myResponse可以通过实例变量访问UILabel myResponse.没有它@synthesize,它可以通过_myResponse.在这两种情况下,都可以通过self.myResponse.这是最好的做法是使用实例变量的生命周期方法,存取,存取器或(-viewDidLoad,-viewWillAppear,-setMyResponse:等),并使用self.propertyName所有其他方法来明确从实例变量区分类的属性.
| 归档时间: |
|
| 查看次数: |
854 次 |
| 最近记录: |