2013-08-31 76 views
-1

我讀蘋果文檔和跨越這條線進來:初學者感到困惑分配符號

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

我不會混亂SKView,而是所使用的符號。我從來沒有見過它,不知道它叫什麼或它是如何工作的。通常情況下,如果我想創建一個視圖,我會做這樣的事情:

UIView *view = [UIView alloc]init]; 

有人能解釋一下這兩個符號或擊穿第一符號之間的區別是什麼?我也看到了很多UIColor的用法。我不知道這是叫什麼,所以我不完全確定我會搜索什麼。

+3

它被稱爲[類型轉換](http://en.wikipedia.org/wiki/Type_conversion#C-like_languages)。這不是創建,而是分配。這裏沒有分配。 –

回答

1

通常情況下,如果我想創建一個視圖...

你問一下,self.view的符號,不直接創建一個視圖。點符號是訪問對象屬性的簡單方法。它的確是[self view]一樣。在您的示例中,self的對象可能是視圖控制器,因此具有view屬性,該屬性通過-(NSView*)view方法訪問並通過-(void)setView:進行設置。

現在,視圖控制器懶得加載他們的視圖 - 他們不會加載(或創建)他們管理的視圖,直到需要爲止。因此,-(UIView)view訪問看起來是這樣的:

-(UIView)view 
{ 
    if (_view == nil) { 
     [self loadView]; 
    } 
    return _view; 
} 

所以它不是點符號,創建視圖,那就是我們正在調用-view方法的事實。當然,由於view屬性被聲明爲UIView*,但您的視圖控制器管理的是SKView的實例,因此您需要將值轉換爲SKView*