Objective-C 的对象模型
作者从自己的C++开发经验出发,对Objective-C的对象模型进行了梳理和对比。文章指出,Objective-C的消息传递语法(如`[obj message:param]`)比C++的函数调用更强调可读性,参数名称与方法名融为一体,减少了参数写错或遗漏的风险。 在类与对象的设计上,两者差异显著。Objective-C通过`@property`简化实现,并支持运行时动态绑定,使用`id`类型可以向任何对象发送消息。而C++的RTTI则更偏向静态的类型识别。作者特别提到了Objective-C独有的Category机制,它允许在不改变类内存布局的前提下,将方法拆分到不同模块中,这比C++的友元(friend)机制使用起来更为优雅。此外,协议(`@protocol`)类似于接口,但支持`@optional`方法,提供了更灵活的契约检查。 文章认为,Objective-C在基础库整合和语言扩展方式(利用`@`符号)上比C++更为简洁一致,其动态模型带来的灵活性,如今已能通过先进的编译技术弥补性能损耗。整体来看,Objective-C牺牲了部分静态确定性,换来了运行时的动态能力,试图在性能与灵活性之间找到独特平衡点。