市面上热卖的iPhone开发秘籍是iPhone Developer's Cookbook的中文版.
很欣赏几位译者对iPhone开发的普及所做的努力,但技术功底实在不敢恭维。
翻译上有明显的漏洞,不是简单的typo,而是似乎译者并没有深入学习过c++或者说书翻译得很匆忙而没有被很好的review过。
我把我看到的一些错误及其修正持续更新在本帖中:
------
1.2节(组建iPhone项目)中,如下一个简单的句子有两处错误:
“它是ANSI C的一个面向对象的子集,而ANSI C是结合C和Smalltalk开发而来的”
英文原文:
“This is an object-oriented
superset of ANSI C, which was developed from a mix of C and Smalltalk.”
其中superset被误译为subset“子集”,而C和Smalltalk的结合明明是Objective-C,怎么成了ANSI C?
正确的译文应该是:
“它是ANSI C的一个面向对象的超集,是由C和Smalltalk语言的一个结合开发而来”。
------
1.5 SDK 限制
"in other ways" 应该是"在其它方面",而不是"换句话说". 整个语境应该是说:
除了使用相似的语言和框架外,在其它方面,和Mac机编程相比,iPhone的开发都是受限制的.
------
1.6 编程范型
"iPhone编程中心采用两种重要的范型",低级错误.
英文原文:iPhone programming centers on two important paradigms
centers on是该句的谓语, 正确的译文应该是:"iPhone编程以两种重要的范型为中心:"
------
1.6.1 "伪多重继承(通过调用转移)", 译者翻译比较合适:
英文原文:
"Multiple inheritance is an important feature of Objective-C’s approach to object- oriented programming. iPhone classes can inherit behaviors and data types from more than one parent.Take the class UITextView, for example. It’s both text and a view. Like other view classes,it can appear onscreen."
原文有一些含混不清, 多重继承在面向对象的语言如C++里是有特定含义的,指的是同时从两个父类派生. 而我们知道Objective-C和Java语言一样是单继承的,只有一个父类. 其面向对象的多重继承特性是通过"消息转发"(或译文中的调用转移)来实现的. UITextView类实际上只有一个父类UIView.下面补充苹果网站上关于消息转发和多重继承特性的官方说明:
消息转发和多重继承
消息转发很象继承,并且可以用来在Objective-C程序中模拟多重继承。如图 5-1所示, 一个对象通过转发来响应消息,看起来就象该对象从别的类那借来了或者”继承“了方法实现一样。
图 5-1 消息转发
在上图中,Warrior类的一个对象实例将negotiate消息转发给Diplomat类的一个实例。看起来,Warrior类似乎和Diplomat类一样, 响应negotiate消息,并且行为和Diplomat一样(尽管实际上是Diplomat类响应了该消息)。
转发消息的对象看起来有两个继承体系分支——自己的和响应消息的对象的。在上面的例子中,Warrior看起来同时继承自Diplomat和自己的父类。
消息转发提供了多重继承的很多特性。然而,两者有很大的不同:多重继承是将不同的行为封装到单个的对象中,有可能导致庞大的,复杂的对象。而消息转发是将问题分解到更小的对象中,但是又以一种对消息发送对象来说完全透明的方式将这些对象联系起来。
------
page10下面, section 1.6.2:
"它提供了各种外观下的交互解释方式"
英文原文:
"So in that sense alone, the UIViewController does act as a controller by providing these links between the way things look and how interactions are interpreted."
应该译为:
"它提供了事物外观和交互行为解释两者之间的联系"
------
page21, 1.9.4 编辑标识信息
"只可以编辑公司名称条目"应该是"你可以只编辑公司名称条目"