簡體   English   中英

以下語法的含義是什么? (objective-c樣式方法調用)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM