Objective c 具有多个输入参数的方法
我知道如何创建自己的方法来接受objective-c中的输入参数,但我从来没有创建过一个包含多个输入参数的方法 从我与多个输入参数一起使用的方法中,每个参数都有一个名称 第一:第二:第三: 看起来像Objective c 具有多个输入参数的方法,objective-c,ios,methods,Objective C,Ios,Methods,我知道如何创建自己的方法来接受objective-c中的输入参数,但我从来没有创建过一个包含多个输入参数的方法 从我与多个输入参数一起使用的方法中,每个参数都有一个名称 第一:第二:第三: 看起来像 -(void)first:(NSString*)fname second:(NSString*)mname third:(NSString*)lname 我的问题是,当你用多个输入参数创建自己的方法时,你必须创建一个名字,比如:第一个:第二个:第三,或者你可以有一个C++之类的东西,在那里你有一个名
-(void)first:(NSString*)fname second:(NSString*)mname third:(NSString*)lname代码>
我的问题是,当你用多个输入参数创建自己的方法时,你必须创建一个名字,比如:第一个:第二个:第三,或者你可以有一个C++之类的东西,在那里你有一个名字,后面跟着一个输入参数类型的列表,后面跟着参数名……如果我没记错的话
fullName:(NSString, NSString, NSString) fname, mname, lname;
否。方法必须具有您描述的格式:
- (void)first:(NSString *)fname second:(NSString *)mname third:(NSString *)lname;
必须将参数与方法签名交错。这没关系,因为xcode具有代码完成功能,它可以为您提供关于您的方法正在做什么以及它需要什么的好的描述性名称
e、 g
在上面的示例中,即使不看UIViewController的API,您也可以很好地了解此方法的工作原理及其参数。很好地命名方法来描述它们的功能是一种很好的做法(如果做得好的话,它可以消除大多数注释的需要)
当然,您可能会看到这样编写的方法
- (void)myMethodThatAcceptsARectangle:(float)x :(float)y :(float)w :(float)h;
但在使用过程中,这些参数与什么相关并不十分清楚:
[self myMethodThatAcceptsARectangle:1.0f :1.0f :1.0f :1.0f];
所以你应该避免这种情况(我加了它,以防你看到这种情况并想知道发生了什么)
是的,你可以这样做。它看起来是这样的:
-(void)fullName:(NSString*)fname :(NSString*)mname :(NSString*)lname
你会这样称呼它:
[foo fullName:first :middle :last];
- (void)names:(NSString *)names, ...;
不过,这在很大程度上违背了Objective-C方法名称的意义,而这样做的主要原因是为了表示您不喜欢普通的Objective-C约定,或者可能是为了让自己从正在进行的任何项目中解脱出来。我可以想出一个非常好的理由来使用NSDictionary传递参数。我也相信它回答了这个问题
您可以将所有项目放入NSDictionary中,然后将其解包。如果您想将参数列表发送到PersistanceStore NSObject,那么这可能很有用。下面是一个简单的示例,介绍如何使用参数创建方法
- (void)methodName:(NSString *)parameterOne methodNameContinues:(NSString *)parameterTwo;
比如说,
-(void)showAlertMsg:(NSString *)message withTitle:(NSString *)title;
您可以看到,第二个参数的前缀为“with title”。我们也必须对其他参数进行同样的操作。另一个选项可以是变量参数。它们用于提供数量可变的参数,即使您不会在每个参数上都有一个名称。e、 g
[NSString stringWithFormat:@"My name is %@ %@", @"John", @"Doe"];
应该是这样的:
[foo fullName:first :middle :last];
- (void)names:(NSString *)names, ...;
,-1没有回答OP关于Objective-C语言语法的问题。不正确,不必这样做,请参见下面的答案@PengOne@fuzzybee事实上,这是完全正确的。您可能有一个空字符串作为名称,例如“”,而不是“second”,但是每个名称后面都需要冒号。好的,现在明白了。然而,如果你不把自己说清楚,你可能会感到困惑。这可能是你的答案没有被接受的原因,只是我的2分感谢你,非常有帮助@PengOne:)我怎么能调用这个方法呢?并赋值