基于XMPP的IM已完成一半,后来经理看了说“还不错,这个东西只是让你研究下XMPP,看看你的能力”。界面是按照Android版的QQ做的,呵呵,基本完成了QQ 界面Copy,本想贴个图,结果公司不能上网,USB接口全被封了。
折腾了两个星期,终于把在我的神舟HP860上装上了(硬盘安装)雪豹10.6,和XCode,就因为mac os和XCode的版本对应问题,害得我下了n个Xcode,可惜我的电脑是Intel 1000 bgn的网卡,google了几天都没找到这网卡在MAC上的驱动,导致不能用无线,悲剧。
今晚写了有生以来的第一个IPhone程序,也算是向IPhone开发迈出了第一步吧,为了庆祝下还是贴出这个最最简单的程序。
Objective-C是面向对象程序语言,它是将Smalltalk的信息的类型加入C程序语言。
ObjectC的Foundation库实际上是种运行级对象系统,与一般的对象语言,例如C++,Java不一样,而与COM或者Corba一样,对象,不一定创建在用户应用程序的地址空间中,有可能是创建在另一个地址空间中,甚至创建在别的机器上!
所以,ObjectC的对象(全部继承自NSObject),就是使用引用计数的方法来管理对象的存活,众所周知,当引用计数为0时,对象就被销毁了。操作非常简单,当对象被创建时,引用计数被设成1。可以给对象发送retain消息,让对象对自己的引用计数加1。而当对象接受到release消息时,对象就会对自己的引用计数进行减1,当引用计数到了0,对象就会呼叫自己的dealloc处理,一切都需要程序员亲力亲为,一点马虎不得。
可是,NSAutoreleasePool是什么?它实际上是个对象引用计数自动处理器。
首先,NSAutoreleasePool可以同时有多个,它的组织是个栈,总是存在一个栈顶pool,也就是当前pool,每创建一个pool,就往栈里压一个,改变当前pool为新建的pool,然后,每次给pool发送drain消息,就弹出栈顶的pool,改当前pool为栈里的下一个pool。
接下来要注意,对象,并不是自动被加入到当前pool中,而是需要对对象发送autorelease消息,这样,对象就被加到当前pool的管理里了。
当当前pool接受到drain消息时,它就简单的对它所管理的所有对象发送release消息。
到了这里,一定会发现这个所谓的pool有个坑人的特性,即,如果pool中被管理的对象接受到pool发送的那个release消息后,它的引用计数大于0,那么pool虽然消失了,但是那个对象还是存在的
NSLog是Objective-C的输出函数
很是不习惯苹果系统,尤其是Win上的一些快捷键不能用了,连剪切文件都不知道怎么搞。尤其是在XCode里写代码总喜欢Ctrl c,Ctrl v,不过好像Ctrl d还能用,应该可以设置的,得好好找找。