2014-07-03 44 views
-4

我在IOS關於IOS的書中找到了一個客觀的c語言行,它有一種我從未見過的特定格式。如果有人能夠告訴我該線的含義以及我應該瞭解該公約的其他任何事情,那將會很好。Objective c「UIImageView * imageView =(UIImageView *)self.view;」約定

因此,這裏的行是方法:

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 

    //we must cast the view to UIImageView so the compiler knows is is okay 
    //to send it setImage 

    UIImageView *imageView = (UIImageView *) self.view; //<----the line I'm concerned with 
    imageView.image = self.image; 
} 

如果你沒有注意到,我很擔心的線是

UIImageView *imageView = (UIImageView *) self.view; 

線。

+2

該行的哪一部分不理解?請明確點。 – rmaddy

+2

在你的代碼中,正好在你關注的那一行的上面,有一條註釋解釋了這行代碼的作用:它聲明'self.view'是一個'UIImageView'對象 – spassas

回答

4

這是一種簡單的從一種類型轉換到另一種類型。刪除右側的(UIImageView * ),您將看到一條警告:「不兼容的指針類型初始化UIImageView和UIView *類型的表達式」。發生這種情況是因爲self.view是UIView,而UIImageView是UIView的子類,它不是UIView。編譯器會直接告訴你它們是不同的類型,並通過將它告訴編譯器像UIImageView一樣對待self.view。就好像當你的朋友來到你家門口時,你的喧鬧的狗叫聲,並且你說「冷靜下流,他是個好人,你現在可以躺下來」。

+0

謝謝,它清除了所有 –