有人可以为我解释一下这个方法声明语法吗?在此函数中,将返回 UIPickerView(iPhone 上的老虎机 UI)的行数。据我了解,该方法称为“ pickerView”,并返回一个 NSInteger。
pickerView
它传入了一个指向 UIPickerview 的指针,名为 ‘ pickerView‘ … 首先,为什么方法调用与参数同名?
接下来是名为 component 的 NSInteger 参数,它告诉我们要为哪个组件计算行数。决定哪个在方法体中的逻辑。
什么是’ numberOfRowsInComponent?它似乎描述了我们返回的值,但它在参数的中间。
numberOfRowsInComponent
- (NSInteger) pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { if (component == kStateComponent) return [self.states count]; return[self.zips count]; }
Objective-C 方法被设计为自我记录,它们借鉴了 Smalltalk 的丰富传统。
我会试着解释你在这里有什么,-(NSInteger) pickerView:(UIPickerView*)pickerView numberOfRowsInComponent:(NSInteger)component。
-(NSInteger) pickerView:(UIPickerView*)pickerView numberOfRowsInComponent:(NSInteger)component
- (NSInteger) 第一部分表明这是一个返回 NSInteger 对象的 Objective C 实例方法。 (-破折号)表示这是一个 实例 方法,其中 a+表示这是一个 类 方法。括号中的第一个值是方法的返回类型。
- (NSInteger)
-
+
pickerView: 这部分是 消息名称 的一部分。在这种情况下, 完整的消息名称pickerView:numberOfRowsInComponent:是。Objective-C 运行时获取此方法信息并将其发送到指定的接收器。在纯 C 中,这看起来像 NSInteger pickerView(UIPickerView* pickerView, NSInteger component). 但是,由于这是 Objective-C,附加信息被打包到消息名称中。
pickerView:
pickerView:numberOfRowsInComponent:
NSInteger pickerView(UIPickerView* pickerView, NSInteger component)
(UIPickerView*)pickerView 这部分是 输入 的一部分。这里的输入是类型UIPickerView*,并且有一个局部变量名称为pickerView。
(UIPickerView*)pickerView
UIPickerView*
numberOfRowsInComponent: 这部分是 消息名称 的第二部分。正如您在此处看到的,消息名称被拆分以帮助指示您传递给接收者的信息。因此,如果我要使用变量 foo 和 bar 向对象 myObject 发送消息,我会键入: [myObject pickerView:foo numberOfRowsInComponent:bar]; 而不是 C++ 样式: myObject.pickerView(foo, bar);。
numberOfRowsInComponent:
[myObject pickerView:foo numberOfRowsInComponent:bar];
myObject.pickerView(foo, bar);
(NSInteger)component 这是 输入 的最后一部分。这里的输入是类型的NSInteger,并且具有组件的局部变量名称。
(NSInteger)component
NSInteger