首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Objective-C中的方法重载?

Objective-C中的方法重载?
EN

Stack Overflow用户
提问于 2010-02-18 12:31:17
回答 1查看 45.5K关注 0票数 133

据我所知,Objective-C不支持方法重载。在Objective-C中有什么替代方案呢?或者我应该总是使用不同的方法名?

EN

回答 1

Stack Overflow用户

发布于 2011-08-02 09:47:15

David是正确的,在Objective-C中不支持方法重载。它在这个意义上类似于PHP。正如他还指出的,以他举例的方式定义两个或更多具有不同签名的方法是一种常见的做法。但是,也可以使用"id“类型创建一个方法。通过"id“类型,您可以将任何对象(以及使用NSNumber类的任何原语)发送到该方法,然后在方法本身中,您可以测试其类型并在必要时抛出适当的异常。尽管这确实会对性能造成轻微影响,但除非您正在处理大量数据,否则它很可能是名义上的或微不足道的。

代码语言:javascript
复制
- (void) writeToFile: (NSString *)path fromObject: (id)object {
    if (!([object isKindOfClass: [NSNumber class]] || [object isKindOfClass: [NSString class]])) {
         @throw [NSException exceptionWithName: @"InvalidArgumentException" reason: @"Unrecognized parameter type." userInfo: nil];
    }
}

这也是一个很好的实现协议来强制对象类型的地方,可以这样做:

代码语言:javascript
复制
(id<MyProtocol>)object
票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2286312

复制
相关文章

相似问题

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