首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基本目标C语法

问基本目标C语法
EN

Stack Overflow用户
提问于 2016-06-18 09:53:07
回答 2查看 123关注 0票数 0

我正在学习iOS开发。在setter方法中,我不知道语法及其功能。

代码语言:javascript
复制
-(void)setURL:(NSURL *)URL
{
  _URL = URL;
  if(_URL) {
     NSURLRequest *req = NSURLRequest requestWithURL:_URL];
     [(UIWebView *)self.view loadRequest:req];
      }
}

我不明白的是这句话:

代码语言:javascript
复制
[(UIWebView *)self.view loadRequest:req];

这是我第一次遇到这种情况:将self表示为指向UIWebView实例的指针?还是指示self.view作为指向UIWebView实例的指针?如果是后者,那就很有道理了。在我的应用程序中,self是UIViewController的一个实例,它的视图属性是一个UIWebView。但是,添加它有什么意义呢?为什么不直接使用self.view呢?谢谢你的帮助

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-18 10:26:16

它是手动告诉编译器self.view是UIWebView *类型的-这就是所谓的类型转换。UIViewController的view属性被定义为UIView *。这个类没有任何方法loadRequest:,所以如果您尝试调用它而不将对象转换为UIWebView *,则编译器将警告您似乎在做不正确的事情。

票数 2
EN

Stack Overflow用户

发布于 2016-06-18 09:58:07

当您看到一个表达式执行几个没有显式顺序的操作时,最好检查一下运算符优先表。

(UIWebView *)self.view组件有两个操作--点.运算符和类型转换。根据该表,点运算符具有最高的优先级,因此首先对self.view进行评估。类型强制转换的优先级较低,因此在进行调用之前,self.view的结果被转换为(UIWebView*)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37895628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档