博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IPHONE 开发 4 -- 深入理解iPhone OS/SDK与Objective-C 2.0
阅读量:6379 次
发布时间:2019-06-23

本文共 1642 字,大约阅读时间需要 5 分钟。

IPHONE 开发 4 -- 深入理解iPhone OS/SDK与Objective-C 2.0

 

工欲善其事,必先利其器。在开发iPhone应用程序的时候,深入理解iPhone OS/SDK与Objective-C 2.0是很重要的。

1 iPhone OS[cocoa touch,media,core services,core os]

iPhone OS 由4个主要部分组成。下面简单地罗列一下它们的功能。

 Cocoa Touch
◦窗口和视图
◦事件管理
◦用户接口
◦加速传感器
◦照相机

Media ◦Core Graphics(2维图形接口)

◦Core Animation(动画)
◦OpenGL
◦Core Audio(声音)
◦OpenAL
◦Media Player(MPEG4,MP3)

 Core Services

◦Address Book
◦Core Foundation
◦Core Location
◦CFNetwork(http,https,ftp,SSL,TLS)
◦网络安全
◦SQLite(SQL数据库)
◦XML

 Core OS

◦多线程
◦网络应用(BSD套接字)
◦文件系统
◦Bonjour(利用无线网络连接其他机器)

2 iphone SDK

iPhone SDK 中主要包含下列4个工具。

 ◦Xcode - 项目管理、代码编辑、编译、调试(IDE)
◦Interface Builder - GUI 设计
◦iPhone Simulator - 模拟器
◦Instrument - 性能测试、调整

实际开发的过程中,基本上是在使用 Xcode 与 Interface Builder 来进行的。调试则是使用模拟器或者实际设备。要注意的是在PC上模拟程序,由于PC的主频,性能高于实际设备,所以不能只在模拟器上调试。除此之外,一些类,功能在模拟器上也是不能使用的,比如 NSDateCalendar 类,或者是照相机功能。

3  Objective-C 2.0
 
a 内存管理
 
虽然 Objective-C 2.0 已经支持了垃圾收集了,但是 iPhone OS 中却不能使用它。所以我们需要自己来管理内存。Objective-C 的内存管理方式与使用引用计数的方式,就是说对象有一个计数器,引用对象一次,计数器加一,当计数器为0的时候,该对象的内存被释放。
 
创建对象实例的时候(init,alloc)应用计数加一,执行过程中,别的对象如果需要该对象,需要用(retain)来引用它,这时,该对象的应用计数器加一。不需要对象的时候用(release)来释放,这时引用计数器减一,当计数器为0的时候,释放该对象内存。
 ◦init,alloc - 计数器 +1
◦retain - 计数器 +1
◦release - 计数器 -1

另外如果不使用 retain,release,可以使用(autorelease)来自动释放对象。

 
b 容器
 
Objective-C 中的容器主要有以下3种:
 ◦数组
◦字典
◦Set

向容器中添加的内容不能直接用 int 或 float,需要通过 NSNumber 等封装类来实现。Objective-C 2.0 开始可以使用迭代子(Enumerator),来顺序访问容器中的元素。

 
c Notification
 
Notification是消息通知的功能。具体使用 NSNotificationCenter 类。将需要接受通知的对象,方法,事件注册到该类上。
 
d 归档(Archive)
 
归档是指将对象的内存布局原样地保存到文件系统上。同样对应的由文件中的数据生成对象叫做UnAchive。在 iPhone SDK 中使用 NSKeyedArchiver 和 NSKeyedUnarchiver 类来实现。
 
一般在程序结束的时候,保存当前的状态,再次启动的时候UnAchive一下,就又回到了刚才退出时的状态。

 

转载地址:http://omqqa.baihongyu.com/

你可能感兴趣的文章
轻巧的网络流量实时监控工具NTOPNG
查看>>
Access、Sql 获取当前插入的主键ID
查看>>
聚类算法之DBScan(Java实现)
查看>>
为什么要使用AOP?
查看>>
VC :模板类
查看>>
对C++中string类型的总结
查看>>
Oracle发布公共云Public Cloud
查看>>
eclipse高亮显示
查看>>
Shell 操作数据库
查看>>
if lte IE if gte IE 浏览器兼容
查看>>
基于Lumisoft.NET组件和.NET API实现邮件发送功能的对比
查看>>
C#数据库访问技术之DATAREADER对象读取数据
查看>>
各种排序方法
查看>>
编译时程序透彻理解异常并合理使用异常
查看>>
2013年5月18日星期六
查看>>
js 字符串操作函数集合
查看>>
nullnullCF 312B(Archer-等比数列极限求和)
查看>>
消息函数windows 程序设计 第三章 (下)
查看>>
Javascript 坦克大战
查看>>
Linux内核中__init, __initdata, __initfunc(), asmlinkage, ENTRY(), FASTCALL()等作用
查看>>