gpt4 book ai didi

objective-c - 我可以在 int 和 NSNumber 之间实现多重调度吗?

转载 作者:搜寻专家 更新时间:2023-10-30 20:03:44 24 4
gpt4 key购买 nike

我正在编写一些库代码,库的用户有时对哪些方法应该使用 int 以及何时使用 NSNumber 有不同的看法。我想要一些方法来设置一个方法,以便

[myObject myMethod:5];

[myObject myMethod:[NSNumber numberWithInt:5]]

以同样的方式工作。在 Java 中,自动装箱使这变得相对简单,但我不知道有什么方法可以在 objective-c 中实现这一点。有可能使这项工作吗?

最佳答案

简短的回答:没有。

Objective-C 不像 C++ 那样支持函数/方法重载。

通常,如果你需要支持不同的数据类型,你会创建不同的方法。
请注意,您随后可以自己转换传递的值,因此您不必编写(复制/粘贴)相同的代码。

例如:

- ( void )methodWithInt: ( int )val
{
[ self methodWithNumber: [ NSNumber numberWithInt: val ] ];
}

- ( void )methodWithLong: ( long )val
{
[ self methodWithNumber: [ NSNumber numberWithLong: val ] ];
}

- ( void )methodWithNumber: ( NSNumber * )num
{
/* Effective code */
}

最后,所有内容都将重定向到 methodWithNumber 方法。

关于objective-c - 我可以在 int 和 NSNumber 之间实现多重调度吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8407747/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com