gpt4 book ai didi

objective-c - 不了解 Objective c 中的基本属性和方法

转载 作者:行者123 更新时间:2023-12-05 09:23:06 24 4
gpt4 key购买 nike

我是 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];

}

我在这里所做的只是在选择器 View 的某行被选中时更改背景颜色。

谁能解释一下最后一行。

当我引用文档时,我发现 view 和 setBackgroundColor 是属性。

而我们一般这样调用方法

[对象 someMethod];

那么我的概念哪里出了问题?一些指向相关概念的链接将不胜感激。

最佳答案

属性是最近才添加到语言中的(考虑到 Objective-C 已经有三十多年的历史了)。无论您可以用点语法表达什么,您也可以使用“旧式”方括号语法表达。例如,如果 viewself 的属性,这两种访问它的方式是等价的:

self.view

[self view]

因此,你的最后一行代码等同于

[self.view setBackgroundColor:color];

设置属性也是如此,除了按照惯例添加 set 前缀和首字母大写以得出 setter 的名称。例如,如果属性名为 backgroundColor,则 setter 将被称为 setBackgroundColor:

因此,您可以像这样重写最后一行:

self.view.backgroundColor = color;

关于objective-c - 不了解 Objective c 中的基本属性和方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24229812/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com