2010-11-17 105 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的思维方式,使你的工作效率更高。

相关问题