ios - 使用 Picker View - setter、getter 混淆的概念

标签 ios uipickerview setter getter

好的,这是我的简单 PickerView 代码,它也能正常工作。

@interface ViewController ()
@property NSArray *moods;
@end

@implementation ViewController


-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
    return 1;
}

-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
    return [[self moods] count];
}

-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
    return self.moods[row];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    self.moods = @[@"I" , @"Love", @"Stack", @"Overflow", @"Great!"];
}

我的问题是关于使用属性的 setter 和 getter 方法的混淆行为。为了进一步澄清,我不知道为什么 setter 方法的 .(点)符号有效而括号样式无效。

比如在这个方法下

-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
    return self.moods[row];
}

如果我输入为

return [self moods[row]];

那是行不通的。为什么?它说缺少标识符并像这样进一步添加它

return [self moods[[row]]];

它根本无法正常工作。一直要求添加标识符错误。

同样适用于此方法,下面的方法可以正常工作

    self.moods = @[@"I" , @"Love", @"Stack", @"Overflow", @"Great!"];

但是下面的代码风格也行不通

    [self moods] = @[@"I" , @"Love", @"Stack", @"Overflow", @"Great!"];

在我的例子中甚至是 setValue forKey。

好吧,我同意我对此还很陌生,并且正在尝试自学。上周我尝试学习 Objective-C 并竭尽全力,涵盖了所有这些概念。但这是我接触 iOS 编程的第二天,我发现这些小东西很难掌握。

您能提供一些详细的帮助和指导吗?在观看一些有关 iOS 的斯坦福大学类(class)视频时,他们建议始终对属性使用点表示法。但你可以同时使用两者,对吧?所以我需要理解并打下坚实的基础。谢谢!

最佳答案

id x = self.moods => getter 及其等于 id x = [self moods]

self.moods = array => setter 及其等于 [self setMoods:newArray]

访问项目: self.moods[index][self moods][index]

关于ios - 使用 Picker View - setter、getter 混淆的概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32249445/

相关文章:

c++ - 无法让二传手工作

c# - Single Identified(on.prop, value), new时设置a.prop

Javascript Object.defineProperty 设置属性更改时触发的方法

ios - 有谁知道如何获取选择器 View 的值(value)并将该值发送到 View Controller 的另一个选择器 View

ios - 后续 View Controller 中缺少选项卡栏 Controller

ios - ASIHTTPRequest 在 ios8 上导致应用程序崩溃

android - 如何向特定平台发送通知?

ios - UITableView 顶部的 UISegementController

c# - 使用 Pickerview 而不是键盘的 TextInput 字段

ios7 - UIPickerView 工具栏按钮不起作用