代码之家  ›  专栏  ›  技术社区  ›  Fraggle

目标C方法签名。它们不一致吗?

  •  15
  • Fraggle  · 技术社区  · 14 年前

    我对Objective-C不熟悉,但请在这里帮我。

    我看到的是,Objective-C中采用多个参数的方法签名似乎不一致。

    例子:

    - (void) sendEmail: (NSString *) toStr
             subject:(NSString *) subjectStr
             body:(NSString *) bodyStr;
    

    好的,这里我们有3个“参数”(至少我习惯这样称呼它们),但其中2个有“外部”名称(主题、正文),但第一个没有!从一致性/风格的角度来看,这不是有什么问题吗?

    当我们调用这个方法时,我们会这样做:

    [emailObj sendEmail:@"test@test.com" subject:@"testSub" body:@"this is a test"]
    

    (希望我做得对,记住我是新来的。)

    所以主语和主语在呼叫中都有清楚的标记,而不是“收件人”地址?我觉得很奇怪。为什么第一个参数需要特殊处理?

    3 回复  |  直到 14 年前
        1
  •  14
  •   Yuji    14 年前

    -(void) A:(NSObject*)a B:(NSObject*)b C:(NSObject*)c
    

    A B C

    A:B:C:

     if([obj respondsToSelector:@selector(A:B:C:)]){
         ...
     }
    

    obj [obj respondsToSelector:@selector(A:)] NO

    A:C:B:

        2
  •  12
  •   Adam Robinson    14 年前

    sendEmailTo

        3
  •  10
  •   Dave DeLong    14 年前

    - (void) sendEmailToRecipient:(NSString *)recipient subject:(NSString *)subject body:(NSString *)body;