相关疑难解决方法(0)

Objective-C中的方法重载?

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

overloading objective-c ios

128
推荐指数
3
解决办法
4万
查看次数

任何人都可以根据Apple Objective-C文档的摘录解释选择器吗?

从Apple Objective-C文档中,加粗相关部分:

方法返回和参数类型

消息传递例程只能通过选择器访问方法实现,因此它使用相同的选择器来处理所有方法.它从选择器中发现方法的返回类型及其参数的数据类型.因此,除了发送到静态类型接收器的消息之外,动态绑定要求具有相同名称的方法的所有实现具有相同的返回类型和相同的参数类型.(静态类型的接收器是此规则的一个例外,因为编译器可以从类类型中了解方法实现.)

虽然同名的类方法和实例方法由同一个选择器表示,但它们可以具有不同的参数类型和返回类型.

我一遍又一遍地阅读这个街区,但我似乎无法超越似乎是矛盾的东西.首先,它说由于动态绑定,所有具有相同名称的方法的实现都需要具有相同的返回类型和参数类型.

因为它使用相同的选择器来处理所有方法,这是否意味着无论我有多少个不同的对象,如果它们都有EatCake()方法,那么它们将共享EatCake的相同选择器?如果是这样,为什么他们必须具有相同的参数和返回类型?

然后在下一部分中它表示尽管它们由相同的选择器表示,但它们可以具有不同的参数类型和返回类型.所以现在我完全糊涂了,我以为它只是说不是这样的.

我不认为这是一个错误,我希望我根本不理解这两个陈述之间的区别.

任何人都可以为我清除这个吗?

objective-c selector

7
推荐指数
1
解决办法
167
查看次数

标签 统计

objective-c ×2

ios ×1

overloading ×1

selector ×1