我同意Apple对@property
和@synthesize
的文档非常好的评估。另外,我已经阅读了有关stackoverflow的优秀教程。
我想请某人确认或更正以下内容。鉴于存在:
@property UIWindow *itsWindow; // .h file
@synthesize itsWindow = window_; // .m file
并考虑这些陈述:
1)self.itsWindow = nil;
2)[self setItsWindow:nil];
3)window_ = nil;
4)itsWindow = nil;
(1)是消息[self itsWindow]
,而(3)和(4)是实际的类参数。
如果上述内容正确,则4个语句中的任何一个都可以在-init
类方法中使用。
答案 0 :(得分:3)
(4)不正确。即使在对象中,如果没有对象指针,也无法访问属性。所以你可以说:
self.itsWindow
[self itsWindow]
self.itsWindow = nil
aDifferentObject.itsWindow = nil
[aDifferentObject setItsWindow:nil]
但你不能只说itsWindow = nil
。
语句1-3都可以,但您通常希望直接在init和dealloc方法中访问ivars,并在其他地方使用属性访问器。