我的第一个IPhone程序

作者分享了首个iPhone程序的开发经历,介绍了Objective-C的基础知识及NSAutoreleasePool的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     基于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还能用,应该可以设置的,得好好找找。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值