基本 Objective C 语法
Basic Objective C grammar
我正在学习 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];
这是我第一次遇到 situation:indicate self 作为指向 UIWebView 实例的指针?或者将 self.view 指示为指向 UIWebView 实例的指针?如果是后者,那还挺有道理的。在我的应用程序中,self 是 UIViewController 的一个实例,它的视图 属性 是一个 UIWebView。但是添加它有什么意义呢?为什么不直接使用 self.view 呢?感谢帮助
当您看到一个表达式执行多个没有明确顺序的操作时,最好检查一下 operator precedence table。
(UIWebView *)self.view
组件有两个操作 - 点 .
运算符和类型转换。根据 table,点运算符具有最高优先级,因此首先计算 self.view
。类型转换具有较低的优先级,因此 self.view
的结果在进行调用之前被转换为 (UIWebView*)
。
它手动告诉编译器 self.view
是 UIWebView *
类型——这被称为类型转换。 UIViewController
的 view
属性 定义为 UIView *
。这个 class 没有任何方法 loadRequest:
,所以如果你尝试调用它而不将对象转换为 UIWebView *
,那么编译器会警告你你似乎在做一些不正确的事情.
我正在学习 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];
这是我第一次遇到 situation:indicate self 作为指向 UIWebView 实例的指针?或者将 self.view 指示为指向 UIWebView 实例的指针?如果是后者,那还挺有道理的。在我的应用程序中,self 是 UIViewController 的一个实例,它的视图 属性 是一个 UIWebView。但是添加它有什么意义呢?为什么不直接使用 self.view 呢?感谢帮助
当您看到一个表达式执行多个没有明确顺序的操作时,最好检查一下 operator precedence table。
(UIWebView *)self.view
组件有两个操作 - 点 .
运算符和类型转换。根据 table,点运算符具有最高优先级,因此首先计算 self.view
。类型转换具有较低的优先级,因此 self.view
的结果在进行调用之前被转换为 (UIWebView*)
。
它手动告诉编译器 self.view
是 UIWebView *
类型——这被称为类型转换。 UIViewController
的 view
属性 定义为 UIView *
。这个 class 没有任何方法 loadRequest:
,所以如果你尝试调用它而不将对象转换为 UIWebView *
,那么编译器会警告你你似乎在做一些不正确的事情.