Iphone 下面的语法是什么意思?(objective-c风格的方法调用)
我是objective-c的noob(来自c#/Java背景),很难理解下面的objective-c语法,它用于Iphone 下面的语法是什么意思?(objective-c风格的方法调用),iphone,objective-c,ios,cocoa,ios5,Iphone,Objective C,Ios,Cocoa,Ios5,我是objective-c的noob(来自c#/Java背景),很难理解下面的objective-c语法,它用于选取器视图控件(以及使用选取器视图需要实现的其他方法): 为了理解,我尝试将其映射到以下语法,但似乎完全不同 -(NSString *)MethodName: (UIPickerView *)FirstParam and:(NSInteger)SecondParam and:(NSInteger)ThirdParam 有人能把这些部件分解一下并解释一下吗?
选取器视图
控件(以及使用选取器视图
需要实现的其他方法):
为了理解,我尝试将其映射到以下语法,但似乎完全不同
-(NSString *)MethodName: (UIPickerView *)FirstParam and:(NSInteger)SecondParam
and:(NSInteger)ThirdParam
有人能把这些部件分解一下并解释一下吗?这是一个名为
pickerView:titleForRow:forComponent:
它返回指向NSString
的指针,并需要UIPickerView*、NSInteger和NSInteger类型的参数
类似java的方法声明可能如下所示:
NSString pickerView-wittleforwComponent(UIPickerView-pickerView,NSInteger行,NSInteger组件)
方法名称(选择器)是所有三个组件:pickerView:titleForRow:forComponent:
。除此之外,你完全正确。(是的,参数和选择器段在Objective-C中混合在一起。这是它的优点之一;它有助于长消息表达式的可读性。)不同之处在于,在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
*/
…erik aligner和bdares的答案解释了一切 还有一件事: 开头的“-”减号表示可以用类的实例调用此方法。 在这种情况下,该方法由pickerView本身调用(您不调用它,您只是在采用UIPickerViewDeleteGate协议的类中实现它/意味着它使用该协议所需的所有方法) 但是,一般来说,应该在实例上调用以减号开头的方法。 例如,方法
- (void)addSubview:(UIView *)view
在UIViewClass中声明,应按以下方式调用:
[yourUIViewInstance addSubview:yourSubViewInstance];
[UIView setAnimationDelay:1.0];
而用加号“+”声明的方法意味着您不需要在实例上调用它们(您可能根本没有分配任何实例),而需要在类本身上调用它们
例如,对于UIView方法
+ (void)setAnimationDelay:(NSTimeInterval)delay
你应该这样称呼它:
[yourUIViewInstance addSubview:yourSubViewInstance];
[UIView setAnimationDelay:1.0];