我是Objective C的新手,但对面向对象编程语言有一些了解.
我在下面的代码中有一点疑问:
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
UIColor *color;
switch (row) {
case 1:
color = [UIColor colorWithRed:1.0 green:0.85 blue:2/255.0 alpha:1.0];
break;
case 2:
color = [UIColor greenColor];
break;
case 3:
color = [UIColor darkGrayColor];
break;
default:
color = [UIColor whiteColor];
break;
}
[[self view] setBackgroundColor:color];
}
Run Code Online (Sandbox Code Playgroud)
我在这里做的只是在选择选择器视图的某一行时更改背景颜色.
有人可以解释最后一行.
当我提到doc时,我发现view和setBackgroundColor属性.
我们通常称这样的方法
[Object someMethod];
那么我的概念在哪里出错?将赞赏一些相关概念的链接.
最近,属性被添加到语言中(考虑到Objective-C已有三十多年的历史).无论您使用点语法表达什么,您还可以使用"旧式"方括号语法表达.例如,如果view是属性self,则这两种访问方式是等效的:
self.view
Run Code Online (Sandbox Code Playgroud)
和
[self view]
Run Code Online (Sandbox Code Playgroud)
因此,您的最后一行代码相当于
[self.view setBackgroundColor:color];
Run Code Online (Sandbox Code Playgroud)
设置属性也是如此,除非按照惯例set添加前缀和初始大小写以提出setter的名称.例如,如果调用该属性backgroundColor,则将调用settersetBackgroundColor:
因此,您可以像这样重写最后一行:
self.view.backgroundColor = color;
Run Code Online (Sandbox Code Playgroud)