C.J*_*hns 40 methods objective-c ios
我理解如何创建自己的方法,接受objective-c中的输入参数,但我从来没有真正创建过具有多个输入参数的方法!
从我使用多个输入参数的方法开始,每个参数都有一个名称
第一第二第三:
看起来像
- (void)first:(NSString *)fname second:(NSString *)mname third:(NSString *)lname;
我的问题是当你用多个输入参数创建自己的方法时,你必须创建一个名字,如第一个:第二个:或者你可以只有像C++这样的东西,你有一个名字后跟一个输入参数类型列表,后跟参数名称......如果我没记错的话.
fullName:(NSString, NSString, NSString) fname, mname, lname;
Run Code Online (Sandbox Code Playgroud)
Pen*_*One 57
不可以.方法必须具有您所描述的格式:
- (void)first:(NSString *)fname second:(NSString *)mname third:(NSString *)lname;
Run Code Online (Sandbox Code Playgroud)
Pau*_*l.s 26
您必须将参数与方法签名交错.没关系,因为xcode有代码完成,它可以为您提供关于您的方法正在做什么以及它需要什么的很好的描述性名称.
例如
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,甚至没有查看UIViewController的API,你可以很好地理解这个方法是如何工作的以及它的params是什么.优秀的做法是很好地命名您的方法以描述它们的作用(如果做得好,它可以消除大多数评论的需要).
你当然可以看到这样写的方法
- (void)myMethodThatAcceptsARectangle:(float)x :(float)y :(float)w :(float)h;
Run Code Online (Sandbox Code Playgroud)
但是,在使用这些参数时,这将不是很清楚:
[self myMethodThatAcceptsARectangle:1.0f :1.0f :1.0f :1.0f];
Run Code Online (Sandbox Code Playgroud)
所以你应该避免这种情况(我添加了它,因为你看到了这一点,并想知道发生了什么).
Cal*_*leb 20
fullName:(NSString, NSString, NSString) fname, mname, lname;
Run Code Online (Sandbox Code Playgroud)
是的,你可以做那样的事情.它看起来像这样:
-(void)fullName:(NSString*)fname :(NSString*)mname :(NSString*)lname
Run Code Online (Sandbox Code Playgroud)
你会这样称呼它:
[foo fullName:first :middle :last];
Run Code Online (Sandbox Code Playgroud)
这在很大程度上违背了Objective-C方法名称的要点,而做这样的事情的主要原因是注册你不喜欢正常的Objective-C约定,或者也许是为了让你自己开始你正在做的任何项目.