31

我从 Xcode 4.6 收到以下警告。

.. used as the name of the previous parameter rather than as part of the selector

我知道我可以禁用此警告,但我宁愿修复它。

我有 109 个这样的警告,所以我显然写得很糟糕。

这是我的一些方法。

+(NSString*)addFormatPrice:(double)dblPrice:(BOOL)booRemoveCurSymbol;

-(void)showHelpChoices:(UIView *)vw:(id)dg;

那么,编写这些方法的正确方法是什么?

4

4 回答 4

81

您的第一种方法是声明选择器+addFormatPrice::。有空格,它看起来像

+ (NSString *)addFormatPrice:(double)dblPrice :(BOOL)booRemoveCurSymbol;

这像[NSString addFormatPrice:0.3 :YES].

你应该做的实际上是给前面的参数一个名字,比如

+ (NSString *)addFormatPrice:(double)dblPrice removeCurSymbol:(BOOL)booRemoveCurSymbol;

然后会像[NSString addFormatPrice:0.3 removeCurSymbol:YES].

于 2013-02-02T08:37:16.557 回答
14

如果您将它们分成几行,也许您会更容易理解?

+(NSString*)addFormatPrice:(double)dblPrice
                          :(BOOL)booRemoveCurSymbol;

-(void)showHelpChoices:(UIView *)vw
                      :(id)dg;

Objective-C 方法名的结构是这样的:

- (returntype)firstPartOfMethodWithParameter:(type)nameOfFirstParameter secondPartOfNameWhichDescribesSecondParameter:(type)nameOfSecondParameter;

也就是说,完整的方法名称被分解,参数名称散布在其中。冒号将每个“标签”与其参数分开;空格将参数名称与方法名称的下一部分分开。

您的方法缺少第二部分,即描述第二个参数的位。现在,您的方法的名称是addFormatPrice::and showHelpChoices::,这两者都是合法的,但不惯用。当您调用它们时,它将如下所示:

[Excelsior addFormatPrice:2.0 :YES];
[thumpy showHelpChoices:aView :obj];

这应该清楚地表明您的名字不太正确。您只需要为第二个参数添加标签:

+(NSString*)addFormatPrice:(double)dblPrice
    removingCurrencySymbol:(BOOL)booRemoveCurSymbol;

-(void)showHelpChoices:(UIView *)vw
             digeridoo:(id)dg;
于 2013-02-02T08:38:19.220 回答
2

有关命名 Objective-C 方法的建议,您应该求助于 Objective-C 风格指南,例如Apple 的 Cocoa 编码指南。任何遵循社区约定和 Apple 框架的样式指南都会建议您为方法命名,以便在方法名称中清楚地描述每个参数的用途。

+(NSString *)priceStringWithPrice:(double)price removeCurrencySymbol:(BOOL)removeCurrencySymbol

-(void)showHelpChoicesInView:(UIView *)view withSomethingWithAnUndecipherableName:(id)mysteryParameter

请注意名称的显着变化,以表明它在您的程序中的作用(我假设)以及每个参数的作用。您的类方法不会向任何内容添加任何内容 - 而是返回一个新字符串。这使您的代码与其他开发人员的代码、Apple 的框架、您可能使用的其他库自然地融合在一起,并大大提高了可读性。不命名参数会降低可读性并使可维护性变得更加困难。

在相关的说明中,不必要的缩写,包括匈牙利符号,是不和谐的,不符合风格,如果你遵循良好的命名习惯,你就不需要它们,并且会产生易于维护的代码。所以不要叫它vw,叫它viewviewToShowIn。不要称之为strValcall itvalueStringsomethingSpecificallyDescribingTheNatureOfTheValueString.

于 2013-02-02T08:54:44.293 回答
1

这就是你应该这样做的方式

+(NSString*)addFormatPrice:(double)dblPrice removeCurSymbol:(BOOL)booRemoveCurSymbol;

-(void)showHelpChoices:(UIView *)vw  whatEverThePurposeOf:(id)dg;

尝试从 Apple 的示例代码中学习。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

首先,你可以试着用一句话来写你的方法。

像这样

applicationdidFinishLaunchingWithOptions

然后,添加带有参数的名词描述(UIApplication *)application(NSDictionary *)launchOptions

于 2013-02-02T08:36:15.957 回答