@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。