初学者对分配符号感到困惑

时间:2013-08-31 01:41:48

标签: iphone objective-c

我正在阅读Apple文档并遇到了这一行:

SKView *spriteView = (SKView *) self.view;

我对SKView并不感到困惑,而是使用了符号。我以前从未见过它,也不知道它叫什么或它是如何工作的。通常,如果我想创建一个视图,我会做类似的事情:

UIView *view = [UIView alloc]init];

有人可以解释两种表示法之间的差异或分解第一种表示法吗?我已经在UIColor中看到过这种情况。我不知道这叫什么,所以我不确定我要搜索什么。

1 个答案:

答案 0 :(得分:1)

  

通常,如果我想创建一个视图......

您询问的符号self.view不会直接创建视图。点表示法是访问对象属性的简单方法。它与<{1}}完全相同。示例中[self view]的对象可能是视图控制器,因此具有self属性,可通过view方法访问并通过-(NSView*)view设置。

现在,视图控制器在加载视图方面很懒惰 - 他们不会加载(或创建)他们管理的视图,直到需要它为止。因此,-(void)setView:访问器看起来像:

-(UIView)view

因此,不是创建视图的点符号,而是您调用-(UIView)view { if (_view == nil) { [self loadView]; } return _view; } 方法的事实。当然,由于-view属性被声明为view,但您的视图控制器管理UIView*的实例,您需要将值转换为SKView