我有一个在我的应用中广泛使用的方法,它看起来是这样的:
-(void)commandWithParams:(NSMutableDictionary*)params command:(NSString *) command method: (NSString *) method onCompletion:(JSONResponseBlock)completionBlock { }
用于执行对API的REST调用。在到处使用它之后,我意识到我需要添加另一个参数(只会在某些时候使用),我想知道做这件事的最好方法是什么。
我考虑过使用一个参数,如果没有指定,这个参数默认为nil,但显然这在目标c (?)中是不可行的。
我该怎么去改变它呢?我必须在它被调用的地方更改它,并传递nil吗?如果是这样的话,xCode中有没有什么简洁的函数可以做到这一点而不会带来太多的麻烦呢?
谢谢。
发布于 2012-12-04 15:43:25
Objective-C中没有可选参数。相反,您可以使用两种不同的方法。
假设你有这样的方法:
- (void)methodWithArgument:(NSString *)str {
// block A
}
现在,您需要添加一个新参数,但不希望在代码中到处指定它。
创建一个带有附加参数的新方法,并将您的实现移至该方法。如何处理额外的参数,取决于该方法做了什么。在旧方法中,使用nil
作为新参数调用新方法:
- (void)methodWithArgument:(NSString *)str andArgument:(NSString *)str2 {
if (str2 != nil) {
// do something.
}
// block A
}
- (void)methodWithArgument:(NSString *)str {
[self methodWithArgument:str andArgument:nil];
}
这将会像你有一个带有可选参数的方法一样工作,这个参数缺省为nil
(或者你选择的任何参数)。这是一种常见的设计模式,你也可以在苹果的框架中看到它。
发布于 2012-12-04 15:52:00
作为上述方法的替代方法,您可以在AppCode中进行重构。它允许做这样的事情。
https://stackoverflow.com/questions/13706404
复制相似问题