[英]What is the meaning of following syntax? (objective-c style method call)
我是Objective-c的菜鳥(來自C#/ Java背景),難以理解遵循Picker View
控件(以及需要使用Picker View
實現的其他方法)中使用的Objective-C語法:
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row
forComponent:(NSInteger)component
為了理解,我嘗試將其映射到以下語法,但似乎完全不同。
-(NSString *)MethodName: (UIPickerView *)FirstParam and:(NSInteger)SecondParam
and:(NSInteger)ThirdParam
有人可以分解零件並給出一些解釋嗎?
這是一個名為
pickerView:titleForRow:forComponent:
它返回一個指向NSString
的指針,並要求使用UIPickerView *,NSInteger和NSInteger類型的參數。
類似Java的方法聲明可能如下所示:
NSString pickerViewTitleForRowForComponent(UIPickerView pickerView, NSInteger row, NSInteger component)
區別在於,在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本身調用(您不調用它,只需在采用UIPickerViewDelegate協議的類中實現它/意味着它使用該協議所需的所有方法)
但是,通常,應在實例上調用以減號開頭的方法。 例如方法
- (void)addSubview:(UIView *)view
在UIViewClass中聲明的,應該這樣調用:
[yourUIViewInstance addSubview:yourSubViewInstance];
而用加號“ +”聲明的方法意味着您不需要在實例上調用它們(您可能根本沒有分配任何實例),而是在類本身上調用
例如,對於UIView方法
+ (void)setAnimationDelay:(NSTimeInterval)delay
您應該這樣稱呼:
[UIView setAnimationDelay:1.0];
方法名稱(選擇器)是所有三個組件: pickerView:titleForRow:forComponent:
除此之外,您完全正確。 (是的,參數和選擇器段在Objective-C中混合在一起。這是它的優點之一;它有助於長消息表達的可讀性。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.