目标c-property/synthesis语法概要



我同意苹果关于@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,并在其他任何地方使用属性访问器。

最新更新