使用Picker View - setter的概念,getter混乱

时间:2015-08-27 12:28:56

标签: 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上关注一些斯坦福大学的视频课程时,他们建议总是使用点符号表示属性。但你可以使用两者,对吗?所以我需要了解并建立坚实的基础。谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

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