我是Objective-C的新手,但请在这里帮助我.
我所看到的是Objective-C中采用多个参数的方法签名似乎不一致.
例:
- (void) sendEmail: (NSString *) toStr
subject:(NSString *) subjectStr
body:(NSString *) bodyStr;
Run Code Online (Sandbox Code Playgroud)
好的,所以这里我们有3个"参数"(至少那是我习惯称之为的),但其中2个有"外部"名称(主题,正文),但第一个没有!从一致性/风格的角度来看,这有什么不对吗?
当我们称这种方法时,我们这样做:
[emailObj sendEmail:@"test@test.com" subject:@"testSub" body:@"this is a test"]
Run Code Online (Sandbox Code Playgroud)
(希望我做得对,记住我是新手.)
因此,主题和正文在通话中有明确标记,但不是"到"地址?这对我来说似乎真的很糟糕.为什么第一个参数得到特殊处理?
Yuj*_*uji 14
我猜你在方法声明中认为
-(void) A:(NSObject*)a B:(NSObject*)b C:(NSObject*)c
Run Code Online (Sandbox Code Playgroud)
A是方法名,B和C是参数的名称.
在Objective-C中,totality A:B:C:是方法名称(在技术上更称为选择器),并在按名称调用方法时用作单位.例如,
if([obj respondsToSelector:@selector(A:B:C:)]){
...
}
Run Code Online (Sandbox Code Playgroud)
检查是否obj响应A:B:C:.但[obj respondsToSelector:@selector(A:)]会NO在这种情况下.
因此,您应该将整体A:B:C:视为方法名称,并且A是第一个参数的名称.
还需要注意的是,你不能打电话A:B:C:的A:C:B:,无论是.
Dav*_*ong 10
我会说,如果你对一个方法的作用感到困惑,那么它可能没有被它命名.
鉴于上面的选择器,我希望3个参数是某种电子邮件对象,主题和正文.但是,由于第一个参数不是"电子邮件"对象而是电子邮件的收件人,我可能会将此方法重命名为:
- (void) sendEmailToRecipient:(NSString *)recipient subject:(NSString *)subject body:(NSString *)body;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5057 次 |
| 最近记录: |