0

我有一个在我的应用程序中广泛使用的方法,它看起来像这样:

-(void)commandWithParams:(NSMutableDictionary*)params command:(NSString *) command method: (NSString *) method onCompletion:(JSONResponseBlock)completionBlock { }

这用于对 API 执行 REST 调用。在到处使用它之后,我意识到我需要添加另一个参数(仅在某些时候使用),我想知道最好的方法是什么。

我考虑过使用一个参数,如果没有指定,默认为 nil,但显然这是目标 c 中的一个禁忌(?)

我应该如何去改变它?我是否必须在任何地方更改它并通过零?如果是这样,xCode 中是否有任何简洁的功能可以轻松做到这一点?

谢谢。

4

2 回答 2

2

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(或您选择的任何参数)。这是一种常见的设计模式,你也可以在 Apple 的框架中看到它。

于 2012-12-04T15:43:24.650 回答
1

作为上述方法的替代方法,您可以在 AppCode 中进行重构。它允许做这样的事情。

于 2012-12-04T15:51:59.910 回答