基本目标 - C给了我一些麻烦

时间:2010-03-04 03:59:44

标签: objective-c iphone

我遇到了问题:

-(id)initWithName:(NSString *)n description:(NSString *)d url:(NSString *)u {

我不确定这里发生了什么,initWithName方法是否被传递给n的参数,该参数被转换为NSString?并且还传递了一个参数d,它也被转换为NSString?

在那里写字母'n'和'l'的目的是什么?是否需要将它们定义在哪里或者它们只是任意的参数名称,以帮助我们记住参数是什么?

这一种方法还是三种方法相结合?是'description:'和'url'方法呢?

很抱歉这个问题很简单,我对这个问题感到有些困惑。

3 个答案:

答案 0 :(得分:6)

这是一个名为“initWithName:description:url:”的方法,它接受名为ndu的参数,所有类型都为NSString*。 Objective-C语法在每个冒号处拆分方法的名称(在Objective-C术语中称为“selector”),并在那里放置相应的参数。重点是让代码更自然地阅读。我会说ndu是争论的神圣名字。

您可能对Apple的The Objective-C Programming Language感兴趣。它很短,但仍然能够完全描述语言及其哲学。

答案 1 :(得分:2)

有时候添加一些额外的空格会更容易理解:

-(id)initWithName:(NSString *)n
      description:(NSString *)d
              url:(NSString *)u
{
    ...

基本上,这个方法有三个参数,都是NSString个参数,它们分别被称为ndu。请务必注意冒号是方法名称的一部分,但参数类型和参数名称​​不是名称的一部分。方法的名称是:

initWithName:description:url:

答案 2 :(得分:2)

这是一种方法。这就是objective-c将多个变量传递给方法的方式。如果你更熟悉C,它看起来更像是:initWithName(n,d,u)

但是,在objective-c中,给出了有关方法调用中每个参数的更多信息。我想你会发现你会喜欢这个,因为它可以帮助你理解每个参数的用途。