首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在广泛实现后更改objective-c方法

在广泛实现后更改objective-c方法
EN

Stack Overflow用户
提问于 2012-12-04 23:35:47
回答 2查看 73关注 0票数 0

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

代码语言:javascript
运行
复制
-(void)commandWithParams:(NSMutableDictionary*)params command:(NSString *) command method: (NSString *) method onCompletion:(JSONResponseBlock)completionBlock { }

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

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

我该怎么去改变它呢?我必须在它被调用的地方更改它,并传递nil吗?如果是这样的话,xCode中有没有什么简洁的函数可以做到这一点而不会带来太多的麻烦呢?

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2012-12-04 23:43:25

Objective-C中没有可选参数。相反,您可以使用两种不同的方法。

假设你有这样的方法:

代码语言:javascript
运行
复制
- (void)methodWithArgument:(NSString *)str {
    // block A
}

现在,您需要添加一个新参数,但不希望在代码中到处指定它。

创建一个带有附加参数的新方法,并将您的实现移至该方法。如何处理额外的参数,取决于该方法做了什么。在旧方法中,使用nil作为新参数调用新方法:

代码语言:javascript
运行
复制
- (void)methodWithArgument:(NSString *)str andArgument:(NSString *)str2 {
    if (str2 != nil) {
        // do something.
    }
    // block A
}

- (void)methodWithArgument:(NSString *)str {
    [self methodWithArgument:str andArgument:nil];
}

这将会像你有一个带有可选参数的方法一样工作,这个参数缺省为nil (或者你选择的任何参数)。这是一种常见的设计模式,你也可以在苹果的框架中看到它。

票数 2
EN

Stack Overflow用户

发布于 2012-12-04 23:52:00

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13706404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档