我正在学习iOS开发。在setter方法中,我不知道语法及其功能。
-(void)setURL:(NSURL *)URL
{
_URL = URL;
if(_URL) {
NSURLRequest *req = NSURLRequest requestWithURL:_URL];
[(UIWebView *)self.view loadRequest:req];
}
}
所有我不明白的是那条线:
[(UIWebView *)self.view loadRequest:req];
这是我第一次遇到这种情况:将self指示为UIWebView实例的指针?或者指示self.view作为UIWebView实例的指针?如果是后者,那就很有道理了。在我的应用程序中,self是UIViewController的一个实例,它的view属性是一个UIWebView。但是添加它有什么意义呢?为什么不使用self.view呢?谢谢你的帮助
答案 0 :(得分:2)
当您看到一个表达式执行多个没有明确顺序的操作时,最好使用operator precedence table进行检查。
(UIWebView *)self.view
组件有两个操作 - 点.
运算符和类型转换。根据该表,点运算符具有最高优先级,因此首先评估self.view
。类型广播的优先级较低,因此self.view
的结果会在拨打电话之前投放到(UIWebView*)
。
答案 1 :(得分:2)
它手动告诉编译器self.view
类型为UIWebView *
- 这称为类型转换。 UIViewController
的{{1}}属性定义为view
。这个类没有任何方法UIView *
,所以如果你试图在没有将对象强制转换为loadRequest:
的情况下调用它,那么编译器会警告你你似乎做错了什么。< / p>