Dac*_*hmt 5 xcode accessor ios xcode4
我最近切换到Xcode 4,我真的不明白这种写入访问器的新方法.例如,在创建新项目时自动生成的应用程序委托类中,该window对象不是以@interface这种方式声明的:
@property (nonatomic, retain) IBOutlet UIWindow *window;
Run Code Online (Sandbox Code Playgroud)
然后,在实现文件中,我们有了@synthesize window=_window;.在函数中,我们有self.windowOR _window.
例如:
[self.window makeKeyAndVisible]; // in didFinishLaunchingWithOptions function
[_window release]; // in dealloc function
Run Code Online (Sandbox Code Playgroud)
你能解释我的区别,为什么有没有在@interface,所以我们做@synthesize window=_window;的,而不是@synthesize window;和之间有什么区别self.window和_window,我的意思是,当我必须打电话给其中一个比另一个更?
我有点迷失了,感觉就像新的代码,我正在努力做同样的工作......
谢谢!
Dav*_*ong 16
"为什么没有@interface"
运行时正在为您合成ivar.
"我们为什么这样做 @synthesize window=_window;
这意味着该window属性将使用一个名为的ivar _window(默认情况下,ivar名称是属性的名称)
" self.window和之间有什么区别_window?"
前者使用window"getter"方法(即foo = [self window]),后者直接访问ivar.
"为什么我要打一个比另一个多?"
在您的dealloc方法中使用访问器方法通常被认为是不安全的,这意味着首选使用ivar.
| 归档时间: |
|
| 查看次数: |
3532 次 |
| 最近记录: |