2016-06-18 20 views
0

私はiOS開発を学んでいます。セッターメソッドでは、私は文法とその機能を知らない。基本的な目的C文法

-(void)setURL:(NSURL *)URL 
{ 
    _URL = URL; 
    if(_URL) { 
    NSURLRequest *req = NSURLRequest requestWithURL:_URL]; 
    [(UIWebView *)self.view loadRequest:req]; 
     } 
} 

私は理解していないすべては、その行です:

[(UIWebView *)self.view loadRequest:req]; 

その状況を満たすために私の最初の時間です:のUIWebViewのインスタンスへのポインタとしての自己を示しますか?またはself.viewをUIWebViewインスタンスへのポインタとして指定しますか?後者の場合は、かなり意味があります。私のアプリケーションでは、selfはUIViewControllerのインスタンスで、そのviewプロパティはUIWebViewです。しかし、それを追加するポイントは何ですか?代わりにself.viewを使用するのはなぜですか?助けてくれてありがとう

答えて

2

self.viewがタイプUIWebView *であることをコンパイラーに手動で伝えています - これはタイプキャスティングと呼ばれています。 UIViewControllerviewプロパティはUIView *と定義されています。このクラスにはメソッドloadRequest:が含まれていないので、オブジェクトをUIWebView *にキャストせずに呼び出すと、コンパイラは間違ったことをしているように警告します。

+0

ありがとうございました!それは明らかで分かりやすい。別の答えで、私は完全に質問を理解している!再度、感謝します。 –

2

明示的な順序なしにいくつかの操作を実行する式が表示されたら、operator precedence tableで確認することをお勧めします。

(UIWebView *)self.viewコンポーネントには、2つの操作 - ドット.演算子と型キャストがあります。この表によれば、ドット演算子の優先順位が最も高いので、最初にself.viewが評価されます。型キャストの方が優先順位が低いため、self.viewの結果は電話をかける前に(UIWebView*)にキャストされます。

+0

ありがとうございました。私の知識はかなり拡張されています。そして、間違いなく私は将来のプログラミングにおいて多くの助けになります。もう一度ありがとう! –