我遇到了问题:
-(id)initWithName:(NSString *)n description:(NSString *)d url:(NSString *)u {
我不确定这里发生了什么,initWithName方法是否被传递给n的参数,该参数被转换为NSString?并且还传递了一个参数d,它也被转换为NSString?
在那里写字母'n'和'l'的目的是什么?是否需要将它们定义在哪里或者它们只是任意的参数名称,以帮助我们记住参数是什么?
这一种方法还是三种方法相结合?是'description:'和'url'方法呢?
很抱歉这个问题很简单,我对这个问题感到有些困惑。
答案 0 :(得分:6)
这是一个名为“initWithName:description:url:”的方法,它接受名为n
,d
和u
的参数,所有类型都为NSString*
。 Objective-C语法在每个冒号处拆分方法的名称(在Objective-C术语中称为“selector”),并在那里放置相应的参数。重点是让代码更自然地阅读。我会说n
,d
和u
是争论的神圣名字。
您可能对Apple的The Objective-C Programming Language感兴趣。它很短,但仍然能够完全描述语言及其哲学。
答案 1 :(得分:2)
有时候添加一些额外的空格会更容易理解:
-(id)initWithName:(NSString *)n
description:(NSString *)d
url:(NSString *)u
{
...
基本上,这个方法有三个参数,都是NSString
个参数,它们分别被称为n
,d
和u
。请务必注意冒号是方法名称的一部分,但参数类型和参数名称不是名称的一部分。方法的名称是:
initWithName:description:url:
答案 2 :(得分:2)
这是一种方法。这就是objective-c将多个变量传递给方法的方式。如果你更熟悉C,它看起来更像是:initWithName(n,d,u)
。
但是,在objective-c中,给出了有关方法调用中每个参数的更多信息。我想你会发现你会喜欢这个,因为它可以帮助你理解每个参数的用途。