我同意苹果关于@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]
,而和是实际的类参数。
如果以上内容正确,那么这4条语句中的任何一条都可以在-init
类方法中工作。
(4)不正确。如果没有对象指针,即使在对象内也无法访问属性。所以你可以说:
self.itsWindow
[self itsWindow]
self.itsWindow = nil
aDifferentObject.itsWindow = nil
[aDifferentObject setItsWindow:nil]
但你不能只说itsWindow = nil
。
语句1-3都可以,但您通常希望在init和dealloc方法中直接访问ivar,并在其他任何地方使用属性访问器。