好吧让我说我有A类和B类。在A类中我想说我实现了一个名为saveImage的方法并在.m中实现了该方法。
如果我这样做((ClassA *)self saveImage]是否足够简单; A类中的那个方法会被调用吗?
这背后的逻辑是什么,任何人都可以解释它,以便我能更好地理解吗?
谢谢!
答案 0 :(得分:2)
Casting主要用于编译时类型检查(请注意,为了安全起见,当您向id
类型的对象发送消息时,总是明智的。请参阅here。它被忽略编译器(以及运行时)。转换只是对编译器的承诺,是的,该对象实际上是A类,而不是B类。因此,如果您尝试编译它,除非self
实际上是Class A
的实例或子类(正如你所承诺的那样),你将引发一个异常。如果你违背你的承诺,运行时将会生气。)