2008年 8月9日
如果你准备写一个类,希望保证只有一个实例存在,同时可以得到这个特定实例提供服务的入口,那么可以使用单态设计模式。单态模式在Java、C++中很常用,在Cocoa里,也可以实现。
由于自己设计单态模式存在一定风险,主要是考虑到可能在多线程情况下会出现的问题,因此苹果官方建议使用以下方式来实现单态模式:
2008年 6月30日
代码分享(Beta)是CocoaChina.com最新推出的一个Objective-C代码分享、高亮工具。
这个代码分享工具的主要目的是让广大苹果开发者分享优秀代码知识以及让别人帮助修改有问题的代码。主要特点有:
1 Mac观感和界面,虽然运行在浏览器中,但是看起来和Mac源生程序类似,让开发者在熟悉的环境中分享代码。
2 很好地支持Objective-C代码高亮,借助Cocoachina.com专门针对Objective-C语言修改的Geshi代码高亮库,使Objective-C代码更清晰易懂。
3 支持多种操作系统和多种浏览器。推荐使用Safari以获得最快的速度和标准的显示质量。在Windows的IE6下可以使用但略有显示问题,待解决中。
4 使用简便,无需学习非常容易上手。
用法:
用浏览器打开 http://www.cocoachina.com/codeshare/
如要上传代码,点击“新建代码”按钮,写好标题,贴入代码,点击保存即可。
如要浏览其他人的代码,点击“浏览代码”按钮,选择希望查看的代码,点击下方的“查看代码”。如需将代码复制到剪贴板,可以点击“复制代码到剪贴板”按钮即可。
这个工具目前还是Beta版,还需要添加一些功能,希望大家善用这个工具,如果有意见和建议欢迎提出。
2008年 6月4日
通常来说将C++对象做为参数传递给Objective-C的方法中是比较方便的。
举例来说,比如我们有一个NSString的初始化方法,我们希望传递一个std::string做为参数传进去。
只要你传递了对象的指针,事情就完成了,不过你还可以在参数中使用“被指向”的形式,下面用例子来说明。
2008年 5月28日
介绍一个很有趣的工具ObjCViz,这个工具的作用简单说来,就是把Objective-C的类转化为图表(参见正文中的图形),这样就可以清晰的看出各个类之间的关系和参数、类成员之间的关系。

2008年 4月19日
在Objective-C中,有一些我们之前并不熟悉但是经常见到的数据类型,比如id、nil、Nil、SEL等等。在很多文章里,我们都见过这些数据类型的介绍,但是都没有说的太清楚。
这篇文章从最底层的定义开始,介绍一下这些类型到底是怎么定义的,这会帮助我们更加深入地了解Objective-C。
2008年 4月14日
这篇Objective-C文章的名字叫做《学习Objective-C》,文章篇幅不长,但是已经把几乎所有的Objective-C关键点都逐一介绍了。在介绍的所有的关键点中都带有不长的例子,非常简单易懂。
2008年 4月14日
这篇文章介绍了Objective-C比较底层的内容,主要讲解initialize和init方法的区别。从这篇文章中我们不光可以了解Objective-C在初始化时所做的事情,更可以学习到一些如何研究Objective-C语言内部到底做了什么的方法,这样你也可以自己对更深层次的内容进行探寻。
2008年 4月13日
Leopard中最新的Core Animation技术可以让开发者简单地开发超酷的用户界面。想想iPhone为什么这么受欢迎,因为它革命性的用户界面和用户体验,可以让人爱不释手。在本站之前的文章里,我们介绍过一些关于Core Animation开发方面的文章,但是从来没有介绍过关于关键桢动画方面的内容。
本文通过一个例子讲解Core Animation关键桢动画方面的基本知识,例子很清晰易懂。建议您有一定Cocoa知识以及掌握初步的Core Animation概念,那么通过本文您会了解更多关于Core Animation的知识。
2008年 4月12日
当我们在Cocoa程序中使用列表时,通常我们会将NSTableView中数据绑定到一个NSArrayController中。那么如何将NSArrayController中的内容保存到文件里(比如XML文件),当我们下次打开程序时再恢复其中的内容呢?
本文通过简单的例子介绍如何使用NSManagedObjectContext以及NSPersistentStoreCoordinator,并将NSArrayController中的内容保存到系统默认的Application Support文件夹里。
2008年 4月10日
大部分有一点其他平台开发基础的初学者看到XCode,第一感想是磨拳擦掌,看到Interface Builder之后,第一感想是跃跃欲试,而看到Objective-C的语法,第一感想就变成就望而却步了。好吧,我是在说我自己。
如果你和我一样,对苹果相关的开发:Mac OS X或是iPhone有兴趣,但是第一时间看到Objective-C就会头疼并伴有发烧症状的话,疗效比较好的快速治疗方法是阅读本文。大概花二十分钟左右,而且绝不无聊的时间,你就会对Objective-C有那么一点点了解,至少读读例子不会那么头疼了。
不过假定你要有那么一点点c++、c#或是java的基础,至少能看到c++、c#或是java的源码,能够大致明白说得是什么。
这篇文章不是一篇科技文章,希望你也不要把它当做科技文章来读。文章非常不严谨,但是我相信你能看得懂。
2008年 4月8日
2008年 4月7日

新版本的Skype和一些其他聊天工具都提供了自动将地址簿联系人加入联系人列表的功能,本文通过例子简单地介绍如何使用Cocoa获取Mac OS X的地址簿中联系人的各种信息,这样你也可以在自己的程序中导入系统的地址簿中联系人的各种信息了。
2008年 4月6日
从Leopard开始,苹果在XCode系列开发工具中增加了一个新的功能强大的性能调试工具,叫做Instruments。Instruments是一个非常具有新意的调试工具,如果你使用过iLife中非常简单易用的音乐创作工具GarageBand,你会发现这两者的界面非常类似。能够把开发工具的UI做成像音乐创作软件的形式,可能也只有苹果能够想到了。
![]()
Instrument里提供了极多的功能,可以针对程序的各个方面进行优化调试。对于初学者来说,虽然这个软件的界面极为友好,完全不同于以往的任何开发调试工具,但是如果能够有一篇简单的教学,手把手地通过一个例子用Instruments进行调试,那么就更容易上手了。
本篇文章通过一个简单例子,带你学习如何使用Instruments工具解决应用程序中的内存泄露问题,特别适合初学者阅读。在阅读之前,如果你对Objective-C的内存管理还不是十分了解,推荐先阅读本站之前的两篇文章:
Objective-C 2.0之前需要了解的:关于Obj-C内存管理的规则
和
这样可以更好地理解内存泄露是如何发生的,以及更好地通过本文了解如何快速地解决这一问题。
2008年 4月4日
Objective-C 2.0最大的增强可能就是垃圾收集了(Garbage Collection)。与“垃圾收集”对应的是传统的引用计数(Reference Count)内存管理形式。
使用了垃圾收集意味着大部分情况下这篇文章所介绍的工作你在程序中都不需要做了,系统会自动帮你管理好这些问题。如果你没有阅读过这篇介绍内存管理的文章,请先阅读一下。否则你可能不知道“垃圾收集”说的到底是什么。
另外,iPhone的操作系统目前并不支持垃圾收集,如果你希望做iPhone开发或者希望你的程序在未来移植到iPhone,尽量不要在程序中使用垃圾收集。
2008年 4月3日
Objective-C 2.0增加了一些新的东西,包括属性和垃圾回收。那么,我们在学习Objective-C 2.0之前,最好应该先了解,从前是什么样的,为什么Objective-C 2.0要增加这些支持。
这一切都跟Cocoa内存的管理规则有关系,我们知道,Objective-C中所有变量都定义为指针。指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址,如果使用不当,就会出错或者造成内存的泄露。要了解这些,就需要看看其内存管理的规则到底是什么样的。
这篇文章也应该做为苹果开发工具中提供的性能调试工具Instruments使用前必读知识进行阅读。Cocoa China将在稍后提供Instruments工具的使用方法,以及Objective-C 2.0的详细介绍。
要知道,如果你使用Objective-C 2.0,那么本文描述的大部分工作你都不需要自己去处理了。但是这并不意味着你可以不了解它,相反,只有你对内存管理规则更加了解,你才能更好地使用Objective-C 2.0带来的便利。