通过Casting在另一个类中调用方法?

时间:2012-04-28 03:07:05

标签: objective-c ios casting

好吧让我说我有A类和B类。在A类中我想说我实现了一个名为saveImage的方法并在.m中实现了该方法。

如果我这样做((ClassA *)self saveImage]是否足够简单; A类中的那个方法会被调用吗?

这背后的逻辑是什么,任何人都可以解释它,以便我能更好地理解吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

Casting主要用于编译时类型检查(请注意,为了安全起见,当您向id类型的对象发送消息时,总是明智的。请参阅here。它被忽略编译器(以及运行时)。转换只是对编译器的承诺,是的,该对象实际上是A类,而不是B类。因此,如果您尝试编译它,除非self实际上是Class A的实例或子类(正如你所承诺的那样),你将引发一个异常。如果你违背你的承诺,运行时将会生气。)