我是Objective-c中的菜鸟(来自C#/ Java背景),并且难以理解以下使用Picker View
控件中使用的objective-c语法(以及我们需要实现的其他方法)使用Picker View
):
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row
forComponent:(NSInteger)component
为了理解,我尝试将其映射到以下语法,但似乎完全不同。
-(NSString *)MethodName: (UIPickerView *)FirstParam and:(NSInteger)SecondParam
and:(NSInteger)ThirdParam
有人可以分解这些部件并给出一些解释吗?
答案 0 :(得分:7)
这是一个名为
的方法 pickerView:titleForRow:forComponent:
它返回一个指向NSString
的指针,并且需要UIPickerView *,NSInteger和NSInteger类型的参数。
类似java的方法声明可能如下所示:
NSString pickerViewTitleForRowForComponent(UIPickerView pickerView, NSInteger row, NSInteger component)
答案 1 :(得分:5)
不同之处在于,在Objective-C中,方法名称由部分组成,而不是像java中的单个字符串。
- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row ...
/* ^ ^ ^ ^ ^
| | | | |
Return Type | Argument Type | 2nd part of m. name etc....
| |
Part of method name Argument Name
*/
答案 2 :(得分:2)
... erik aligner和bdares答案解释所有
还有一件事:
开头的“ - ”减号表示您可以使用类的实例调用此方法。 在这种情况下,该方法由pickerView本身调用(您不调用它,您只需在采用UIPickerViewDelegate协议的类中实现它/意味着它使用该协议所需的所有方法)
但是,通常,应该在实例上调用以减号开头的方法。 例如,方法
- (void)addSubview:(UIView *)view
在UIViewClass中声明的应该这样调用:
[yourUIViewInstance addSubview:yourSubViewInstance];
虽然使用加号“+”符号声明的方法意味着您需要不在实例上调用它们(您可能根本没有分配任何实例),而是在类本身上调用
例如,对于UIView方法
+ (void)setAnimationDelay:(NSTimeInterval)delay
你应该这样称呼它:
[UIView setAnimationDelay:1.0];
答案 3 :(得分:1)
方法名称(选择器)是三个组件:pickerView:titleForRow:forComponent:
。除此之外,你完全正确。 (是的,参数和选择器段在Objective-C中混合在一起。这是它的优势之一;它有助于长消息表达式的可读性。)