objc和C++同为由C语言衍生出的OOP语言,但他们实现OOP的方式并不相同:在C++中,对象与方法在编译器绑定;而在objc中,称“方法”一词为“消息”,在程序运行时向对象发送消息,即运行期绑定。
两种方式各有优劣,C++注重性能,objc注重灵活。
然而运行期绑定给开发带来问题——编程时拼写错了方法名,编译器并不报错。笔者曾debug一小时,最后发现是方法名少写了个冒号。
为此笔者曾用过一个笨办法——断言某对象响应某方法,以此来排除错误可能。
这当然太过麻烦,其实有个简单的方法,可以上编译器报warning:
以Xcode 4为例,打开一个项目,在左侧导航栏中双击项目文件:

在弹出窗口中将GCC waring项undeclared selector设为yes:

本文探讨了Objective-C与C++这两种面向对象编程语言的不同之处。重点在于它们实现面向对象编程的方式不同:C++采用编译时绑定,而Objective-C采用运行时绑定,即消息传递。文中还提到了运行时绑定带来的挑战,比如方法名拼写错误的问题,并提供了解决方案。
1409

被折叠的 条评论
为什么被折叠?



