我从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;
那么,编写这些方法的正确方法是什么?
答案 0 :(得分:78)
您的第一种方法是声明选择器+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]
。
答案 1 :(得分:12)
如果你将这些分成几行,也许你会更容易理解?
+(NSString*)addFormatPrice:(double)dblPrice
:(BOOL)booRemoveCurSymbol;
-(void)showHelpChoices:(UIView *)vw
:(id)dg;
Objective-C方法名称的结构如下:
- (returntype)firstPartOfMethodWithParameter:(type)nameOfFirstParameter secondPartOfNameWhichDescribesSecondParameter:(type)nameOfSecondParameter;
也就是说,完整的方法名称被分解,参数名称散布在一起。冒号将每个“标签”与其参数分开;空格将参数名称与方法名称的下一部分分开。
您的方法缺少第二部分,即描述第二个参数的位。目前,您的方法名称为addFormatPrice::
和showHelpChoices::
,两者都是合法但非惯用的。当你打电话给他们时,它将如下所示:
[Excelsior addFormatPrice:2.0 :YES];
[thumpy showHelpChoices:aView :obj];
这应该清楚表明你的名字不太正确。您只需要为第二个参数添加标签:
+(NSString*)addFormatPrice:(double)dblPrice
removingCurrencySymbol:(BOOL)booRemoveCurSymbol;
-(void)showHelpChoices:(UIView *)vw
digeridoo:(id)dg;
答案 2 :(得分:2)
有关命名Objective-C方法的建议,您应该转向Objective-C样式指南,例如Apple's coding guidelines for Cocoa。任何遵循社区惯例和Apple框架的样式指南都会建议您为方法命名,以便在方法名称中清楚地描述每个参数的用途。
+(NSString *)priceStringWithPrice:(double)price removeCurrencySymbol:(BOOL)removeCurrencySymbol
-(void)showHelpChoicesInView:(UIView *)view withSomethingWithAnUndecipherableName:(id)mysteryParameter
请注意名称的重大更改,以指示它在程序中的作用(我假设)以及每个参数的作用。您的类方法不会向任何内容添加任何内容 - 而是返回一个新字符串。这使您的代码与其他开发人员,Apple的框架,您可能使用的其他库的代码自然融合,并极大地提高了可读性。不命名您的参数会降低可读性并使可维护性变得更加困难。
在相关的说明中,不必要的缩写(包括匈牙利表示法)是不和谐的,并且不符合风格,如果您遵循良好的命名惯例,则不需要它们,并且将生成很难维护的代码。因此,请不要将其称为vw
,将其称为view
或viewToShowIn
。请勿将其称为strVal
,将其称为valueString
或somethingSpecificallyDescribingTheNatureOfTheValueString
。
答案 3 :(得分: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