Chinaunix首页 | 论坛 | 博客
  • 博客访问: 51527
  • 博文数量: 6
  • 博客积分: 66
  • 博客等级: 民兵
  • 技术积分: 78
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-02 09:49
文章分类

全部博文(6)

文章存档

2013年(4)

2012年(2)

我的朋友

分类: 其他UNIX

2013-09-02 16:12:16


题外话:如果当初BeOS的Jean-Louis Gassée没有犯傻,也许就不会有Cocoa,更不会有这本书。其实我还是挺喜欢BeOS的继任者——Haiku的。

Mac上的GUI库


  要了解在Mac OS上进行GUI等的开发,Cocoa是必须了解的。作者对比了wxWidgets和Qt这样的跨平台库,说他们在Mac上的一些特性不怎么好。不过这本书终究是4年前出版的,5年前撰写的(估计)。Qt中这些缺点的部分或全部(我不完全确定)已经克服了,wxWidgets的开发则进展缓慢,尚不可知,但在本书出版之后,wxWidgets也经历了若干次重大版本的发布。

  相比而言,在Mac上进行GUI开发,最好当然还是用Objective-C进行原生开发。但合适的跨平台库+调用部分原生的Cocoa也不失为另一种较好的选择,比如金山WPS开发就是走的第二条路线。

使用Cocoa的语言


  Cocoa框架开发的一等公民就是Objective-C。本书主要就是介绍用Objective-C在Cocoa框架下做开发。同时作者也介绍了其他可行的方案,如MacRuby使用Cocoa,通过PyObjC的桥接使用Cocoa。同时作者指出,对于动态语言,可以很容易的用NSProxy 来实现Cocoa对动态语言的桥接。

  这种动态语言的调用笔者没试过,不过我曾经请教过wxOSX的作者Stefan Csomor,他告诉笔者,说他们开发wxOSX时,是在*.mm文件中用Objective-C调用Cocoa的功能和函数,封装得到一些基本的ObjC函数;并在相同的文件中用C++的语法将这些调用Cocoa的ObjC的函数封装一下,得到C++函数和类;在头文件中列出这些C++函数和对象,这样就能在C++中通过包含前面的头文件来使用Cocoa了(这就是后面介绍的Objective-C++的方法,不过本书是一笔带过,没详细介绍)。

  本书作者指出,如果想用其他语言开发Cocoa程序,那么用这写语言改写本书的例子是个不错的开始。话说我正想这么做的——打算用Rust改写一些。。。(笔者正打算写一系列的Rust教程发布在CU,已经存稿十几篇了,不过由于目前只有Rust Reference Manual和简短的Rust Tutorial可供参考,所以内容还在编辑当中。文章会在确保正确的情况下慢慢发布出来的。)

Objective-C


  Objective-C是一门神奇的语言,如果不是苹果,估计早已像Eiffel那样大部分时间存在人们的记忆中了。同时,作者在书中对Objective-C的语法是报喜不报忧。。。

  在介绍Objective-C时,有一句话翻译错了,在3.4.2节中,有个文本框说选择哪个版本的C语言,最后一句话是“但是一般没有必要选择C99”,而这句话的原文是:“ although there is very little reason not to pick C99.”,很明显这里的意思是:“没有理由不选择C99(即一般情况下是选择C99的)”。双重否定啊。

总结


  本书其他部分介绍的是Cocoa开发工具及Cocoa框架的使用,笔者之前还没有接触过Cocoa,希望能通过这本数对其有详细的了解,而市面上其他介绍Cocoa开发的书,与其说是Cocoa开发, 倒不如说是介绍Objective-C的程序语言的数。想比之下,从试读章节和目录来看,这本书更加专注与Cocoa本身,而不是Objective-C的语法。

阅读(1103) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~