如何在Objective-C中调用方法与C++有什么不同?

Rom*_*man 2 c++ gcc objective-c

可能重复:
Objective C消息调度机制

我的问题不是语法.我想学习如何在C++中调用方法与在Objective-C中向对象发送消息以及如何执行它们不同?

Geo*_*roy 5

这是一个非常复杂的问题,因为与C不同,没有修复C++调用对话.

Objective-C只是C的一个薄包装器,所以它使用相同的约定.现在还有一件事,当您发送如下消息时:

[target selector];
Run Code Online (Sandbox Code Playgroud)

它与:

objc_msgSend(target, @selector(selector));
Run Code Online (Sandbox Code Playgroud)

然后它只是传统的C调用约定,第一个表查找与您的消息匹配的函数.这objc_msgSend有点复杂,因为它保持参数堆栈到位并将其直接传递给底层函数.

C++调用约定不同于一个名称修改到另一个,甚至从一个编译器到另一个编译器.

从性能的角度来看,C++方法调用更快,因为链接在编译时被解析(更准确地说是在链接时).该方法是否存在,这会导致链接器错误.

Objective-C方法调用包括在运行时查找方法表,因此您的方法可以在代码中稍后添加,这样可以提供更大的灵活性但性能更低.