我正在阅读Apple文档并遇到了这一行:
SKView *spriteView = (SKView *) self.view;
我对SKView并不感到困惑,而是使用了符号。我以前从未见过它,也不知道它叫什么或它是如何工作的。通常,如果我想创建一个视图,我会做类似的事情:
UIView *view = [UIView alloc]init];
有人可以解释两种表示法之间的差异或分解第一种表示法吗?我已经在UIColor中看到过这种情况。我不知道这叫什么,所以我不确定我要搜索什么。
答案 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
。