ObjC(Objective-C)进入人们的视野,主要源自MacOSX的Cocoa。
人们即使是开发着更多关注的也是Cocoa靓丽的外表,对支撑起Cocoa的ObjC确一直缺乏深入了解。
ObjC给人深刻印象的无异于它与传统基于“.”的面向对象语言语法的完全不同的调用或者消息传递语法。
例:[object doSomethingWithParameter:A paramter:B paramter:C]
习惯传统面向对象语言语法的用户对此非议颇多,最核心的就是:啰嗦!!
然而这种语法并非ObjC的独创,它借鉴自Smalltalk,诞生在ObjC之前。
面向对象语言中,消息通常由消息本体和参数构成,发送消息就是将消息连同参数通知给目标并取得结果。
例:Object.doSomethingWithParamters(A, B, C)
粗一对比,一定会认为后者更“好”,因为更为简洁直接。
简洁也确实简洁,但这种“简洁”有相当大的副作用。
一个新的例子:
[list findStringsWithPrefix:p
suffix:s
matchRegex:r]
list.findStrings(prefix, suffix, matchRegex)
第二种形式,为了说明参数的用途用而特地将变量命名为prefix,suffix和matchRegex。
粗一看,“简洁”形式似乎还比第一种更为“优雅”。