谁能为我解释一下这个方法声明的语法?在此函数中,将返回 UIPickerView(iPhone 上的老虎机 UI)的行数。据我了解,该方法称为“pickerView
”,并返回一个 NSInteger。
它传入了一个指向 UIPickerview 的指针,名为 'pickerView
' ...首先,为什么方法和参数名称相同?
接下来是名为 component 的 NSInteger 参数,它告诉我们要为哪个组件计算行数。决定哪个在方法体中的逻辑。
什么是'numberOfRowsInComponent
?它似乎描述了我们返回的值,但它在参数的中间。
- (NSInteger) pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
{
if (component == kStateComponent)
return [self.states count];
return[self.zips count];
}
最佳答案
Objective-C 方法被设计为 self 记录,它们借鉴了 Smalltalk 的丰富传统。
我将尝试解释您在这里的内容,-(NSInteger) pickerView:(UIPickerView*)pickerView numberOfRowsInComponent:(NSInteger)component
。
- (NSInteger)
第一部分表明这是一个返回 NSInteger 对象的 Objective C instance 方法。 -
(破折号)表示这是一个 instance 方法,其中 +
表示这是一个类 方法。括号中的第一个值是方法的返回类型。
pickerView:
这部分是消息名称的一部分。在这种情况下,完整的消息名称是 pickerView:numberOfRowsInComponent:
。 Objective-C 运行时获取此方法信息并将其发送到指定的接收器。在纯 C 中,这看起来像
NSInteger pickerView(UIPickerView* pickerView, NSInteger 组件)
。但是,由于这是 Objective-C,附加信息被打包到消息名称中。
(UIPickerView*)pickerView
这部分是输入的一部分。这里的输入是 UIPickerView*
类型,并且有一个局部变量名称为 pickerView。
numberOfRowsInComponent:
这部分是消息名称的第二部分。正如您在此处看到的,消息名称被拆分以帮助指示您传递给接收者的信息。因此,如果我要使用变量 foo 和 bar 向对象 myObject 发送消息,我会输入:
[myObject pickerView:foo numberOfRowsInComponent:bar];
与 C++ 风格相反:
myObject.pickerView(foo, bar);
.
(NSInteger)组件
这是输入的最后一部分。这里的输入是 NSInteger
类型并且有一个局部变量名 component。
https://stackoverflow.com/questions/683211/
相关文章:
objective-c - 是否可以刷新 UITableView 中的单个 UITableViewC
objective-c - 为什么 Objective-C 委托(delegate)通常被赋予属性分
ios - 如何在 NSAttributedString 中创建可点击链接?
ios - UIImageView 上的 UIGestureRecognizer
objective-c - 最佳实践? - 数组/字典作为核心数据实体属性
ios - Storyboard 中的 Modal 和 Push segue 有什么区别?
objective-c - 如何等待异步调度的 block 完成?