iOS Xcode 4属性访问

| 我最近切换到Xcode 4,但我不太了解这种编写访问器的新方法。 例如,在创建新项目时自动生成的应用程序委托类中,未在
@interface
中声明
window
对象,而只是这样声明:
@property (nonatomic, retain) IBOutlet UIWindow *window;
然后,在实现文件中,我们有3。 在函数中,我们有
self.window
_window
。 例如:
[self.window makeKeyAndVisible]; // in didFinishLaunchingWithOptions function
[_window release]; // in dealloc function
你能解释一下我的区别吗,为什么ѭ1中什么都没有,为什么我们用
@synthesize window=_window;
代替ѭ9,以及
self.window
_window
有什么区别,我的意思是什么时候我必须比另一个多打电话? 我有点迷茫,感觉就像我在尝试新代码一样无法正常工作... 谢谢!     
已邀请:
\“为什么ѭ1中没有东西\” 运行时正在为您合成ivar。 \“我们为什么要
@synthesize window=_window;
这意味着
window
属性将使用名为
_window
的ivar(默认情况下,ivar名称是该属性的名称) \“
self.window
_window
有什么区别?\” 前者使用
window
\“ getter \”方法(即
foo = [self window]
),而后者则直接访问ivar。 \“为什么我要打一个比另一个多?” 通常在
dealloc
方法中使用访问器方法是不安全的,这意味着首选使用ivar。     
这与Xcode 4无关。这是Objective-C 2.0(Xcode 4在创建项目模板时默认使用)。 我建议阅读“ Objective-C编程语言”中有关属性的章节,这应该使事情更加清楚 而且“老方法”仍然可以使用。您不必在一夜之间更改所有内容,只要不喜欢自动创建的代码,就可以删除它,直到您对新语法感到满意为止。     

要回复问题请先登录注册