新手Objective C开发者问题

时间:2010-05-17 18:21:33

标签: iphone objective-c

我一直在寻找这个问题的答案 - 也许我正在寻找错误的地方。此外,我是Objective C的新手,尽管我有大约10年的开发经验。

代码:

[receiver makeGroup:group, memberOne, memberTwo, memberThree];

方法定义是什么样的?

- (void)makeGroup:(Group *)g, (NSString *)memberOne, ...?

感谢您提供的任何帮助。我知道这可能很简单......

谢谢, [R

5 个答案:

答案 0 :(得分:4)

看起来你有一个方法可以采用可变数量的参数。如果是这种情况,定义将类似于:

- (void)makeGroup:(Group *)g, ...;

查看NSString的{​​{1}}或stringWithFormat:的{​​{1}}方法以获取示例。

编辑:在进一步阅读文档后,您似乎正在查看Objective-C 2.0 documentation中的确切示例。您正在寻找的声明就在第36页的底部。

答案 1 :(得分:1)

您可以使用省略号(...)接收无限数量的参数。查看this了解更多详情!

答案 2 :(得分:1)

将成员作为单独的数组参数更有意义,例如-(void)makeGroup:(Group *)g members:(NSArray *)members。如果你必须做varargs(这很痛苦),它应该写成-(void)makeGroup:(Group *)g members:(NSString *)firstMember, ...

因为我试图弄清楚如何声明文档中的示例方法,它将是这样的:

- (void)makeGroup:(id)group, ...

然后你将使用group参数启动varags机制并使用它来查找其他参数。

答案 3 :(得分:0)

要么你正在寻找MrHen的答案,如果你正在寻求自己的类方法,或者如果你想单独进行,你可以在头文件中写下以下内容:

-(void)makeGroup:(Group *)g;
-(NSString *)memberOne;

答案 4 :(得分:-1)

编辑:我回答错了问题。忽略这一点。

正确的方法是:

-(void)makeGroup:(Group *)g memberOne:(NSString *)memberOne memberTwo:(NSString *)memberTwo memberThree:(NSString *)memberThree {
    ...
}

电话会是这样的:

[receiver makeGroup:group memberOne:memberOne memberTwo:memberTwo memberThree:memberThree];