2010-11-17 110 views

回答

-1
- (void)funcOne:(int)a :(int)b 
+0

謝謝你的回答 – mamrezo 2010-11-17 13:41:44

+0

接受他的回答! :-) – griotspeak 2010-11-17 15:10:48

+1

這個答案在技術上是正確的,但從根本上說是錯誤的。第二個參數是未命名的,完整的方法名稱保留爲'funcOne ::'。它編譯但是就像原來的方法被定義爲void void FuncOne(int a,int _);'一樣錯誤。命名變量只是'_'在技術上是正確的,但它不是一個理智的人會做的事情。在Obj-C中留下一個未命名的參數也同樣醜陋。 – PeyloW 2010-11-18 07:46:51

1

如果你想使用Objective-C代碼「獨立」的功能,那麼你必須只使用純C函數,你在你的問題張貼。

如果你問類的方法,然後他們的語法如下(parameterNames可選):

// Instance method 
- (ReturnType) methodName:(ParameterType1)parameter1 parameterName2:(ParameterType2)parameter2; 
// Class method 
+ (ReturnType) methodName:(ParameterType1)parameter1 parameterName2:(ParameterType2)parameter2; 
3

簡短的回答是:

void FuncOne (int a , int b); 

任何有效的C代碼是有效的Objective-C 。作爲獎勵,任何有效的C++代碼也都是有效的Objective-C++。

對於較長的答案,我想用一個Java類爲例,以使用更好的功能,例如:

public class Rect { 
    public void setColor(int color, boolean animated); 
} 

這個類和它的方法將在適當的Objective-C是:

@interface Rect : NSObject { 
} 

-(void)setColor:(int)color animated:(BOOL)animated; 

@end 

我相信你可以弄清楚轉換,它很好地映射到1到1.在Objective-C世界裏你必須關心的是每一個方法參數都被命名。這可能看起來像一個小東西,但是它可以將代碼的可讀性提高1000倍!以Java中的上述示例爲例:

myRect.setColor(Color.RED, true); 

第二個參數是什麼意思?它是否啓用顏色,是否表示顏色具有應該被尊重的alpha分量(對於大多數JavaME API爲True),還是顏色應該以動畫方式設置?除非您在文檔中查找,否則無法確定。僅僅通過閱讀代碼,因爲它是

[myRect setColor:RED animated:YES]; 

你必須要非常愚蠢不明白是怎麼回事:

對於正確的Objective-C,你永遠不會有這個問題。

您在學習Objective-C中最難的任務不是學習將您現在知道的1到1轉換成Objective-C。你最難的任務是學習Objective-C的思維方式,使你的工作效率更高。

相關問題