zoukankan      html  css  js  c++  java
  • IPHONE 开发 4 深入理解iPhone OS/SDK与ObjectiveC 2.0

    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一下,就又回到了刚才退出时的状态。


     

  • 相关阅读:
    【Henu ACM Round#15 F】Arthur and Questions
    【Henu ACM Round#16 F】Om Nom and Necklace
    【Henu ACM Round#16 E】Paths and Trees
    JS制作的简单的三级及联
    .Net实现的批量删除(使用了repeater控件)
    setInterval和setTimeout调用方法小知识科普
    AJAX制作JSON格式的实时更新数据的方法
    关于获取网站域名的写法杂谈
    JS初识(着重讲解Date函数)
    Guid函数
  • 原文地址:https://www.cnblogs.com/csj007523/p/2548111.html
Copyright © 2011-2022 走看看