iOS的主要框架

       

本文是《Sunvey the Major Framworks》一文的翻译

框架是一个目录,这个目录包含了共享库,访问共享库里代码的头文件,和其它的图片和声音的资源文件。一个共享库定义的方法或函数可以被应用程序调用。

IOS提供了很多你可以在应用程序里调用的框架。要使用一个框架,需要将它添加到你的项目中,你的项目才可以使用它。许多应用程序都使用了如 Foundation、UIKit、和Core Graphics这些框架。根据你为应用程序选择的模版,相关的框架就已经被自动引入了。如果默认加入的框架不能满足你的应用程序的需求,你也可以加入需 要的框架。

看看HelloWorld.xcodeproj项目里都包含了哪些框架(注:HelloWorld.xcodeproj是《Your First iOS App tutorial 》这篇教程里的一个项目)

1.在XCode里打开HelloWorld.xcodeproj项目(如果还没有打开)

2. 在project navigator窗口里点击,点击Frameworks目录前面的三角形图标。你会看到:

UIKit.framework,Foundation.framework, 和CoreGraphics.framework

3. 点击任意一个framework前面的三角,然后再点击Headers前面的三角,可以看到框架里的头文件。

每个框架对应IOS系统里的一层,每层建立在它下面层的上面。应该尽量使用上层的框架来代替下面的框架。更高层次的框架是对底层框架基于对象的抽象。

iOS应用程序基于Foundation和UIKit框架

在你开发程序时,主要使用框架就是Foundation和UIKit,因为它们包含了你需要的大部分东西。

Foundation框架为所有的应用程序提供基本系统服务

你的应用程序,UIKit和其它的框架都是建立在Foundation框架上面的。Foundation框架是用Object-C对Core Foundation框架里许多特性的封装。

使用Foundation可以:

  • 创建和管理集合,比如数组和字典
  • 访问存储在应用程序里的图片和其它资源
  • 创建和管理字符串
  • 提交和接收通知
  • 创建日期和时间对象
  • 自动发现IP网络上的设备
  • 操作URL流
  • 执行异步代码

你已经在《Your First iOS App》里使用到了Foundation框架。比如,你使用一个NSString类的实例存储用户输入的userName。你还使用了Foundation框架的initWithFormat方法创建了一个字符串。

UIKit框架提供创建基于触摸用户界面的类

所有的iOS应用程序都基于UIKit,你不能是应用程序脱离这个框架。UIKit提供了在屏幕上绘制的机制,捕获事件,和创建通用用户界面元素。UIKit也通过管理显示在屏幕上的组件来组织复杂的项目。

使用UIKit可以:

  • 构建和管理你的用户界面
  • 捕获触摸和基于移动的事件
  • 呈现文字和web内容
  • 优化你的多任务程序
  • 创建定制的用户界面元素

在《YouFirst iOS App
Tutorial》里,你也使用到了UIKit。当你仔细查看程序是怎么运行起来的时候,你会看到UIApplicationMain函数创建一个
UIApplication类的实例,这个实例会捕获进来的用户事件。你实现UITextFieldDelegate协议,然后在用户按下Done时隐藏
键盘。实际上,你是在使用UIKit创建用户界面上的UITextField, UILabel,和UIButton类。

你需要知道的其它重要的框架

Core Data , Core Graphics, Core Animation,和OpenGLES框架都是高级的技术。所以这些框架对于你开发应用程序也是很重要的,它们都需要时间去学习和掌握。

Core Data框架管着理应用程序数据模型

Core Data提供对象的管理,使用Core Data,你可以创建模型对象,并管理这些对象。你管理这这些对象间的联系并修改数据。Core Data提供的内建SQLlite技术可以高效的管理数据。

使用Core Data可以:

  • 在库里存储和接收对象
  • 提供基本的undo/redo
  • 自动验证属性值
  • 过滤、分组和优化内存中的数据
  • 用[NSFetchedResultsController]管理表视图中的结果
  • 支持基于文档的应用程序

Core Graphics框架帮助你创建图形

高质量的图形对于所有的iOS应用程序都是很重要的。在iOS中最简单且最快捷的创建图形的方式是使用UIKit框架提供的基于预渲染图形的视图和控
件,然后让UIKit和iOS完成绘制。但是当你需要创建复杂的图形时,Core Graphics则提供了更底层的库来帮助你。

使用Core Graphics可以:

  • 创建基于路径的绘图
  • 抗锯齿渲染
  • 添加梯度、图片和颜色
  • Use coordinate-space transformations.
  • 创建、显示和分析PDF文档

Core Animation允许你创建高级的动画和虚拟效果

UIKit提供建立在Core
Animation之上的动画。如果你需要比UIKit能力更高级的功能,可以直接使用Core Animation。Core
Animation接口包含在Quartz Core框架里。使用Core
Animation可以创建嵌套的对象,并且可以对它们操作、旋转、缩放和转换。使用Core
animation,你可以创建动态的用户界面而不用使用更底层的图形API,如OpenGL ES。

使用Core Animation可以:

  • 创建定制动画
  • 添加定时函数和图形
  • 支持帧动画
  • Specify graphical layout constraints.
  • Group multiple-layer changes into anatomic update.

OpenGL ES 框架提供2D和3D绘图工具

OpenGL ES支持2D和3D绘图,Apple的OpenGL ES实现通过硬件提供了高速的全屏游戏式的应用程序。

使用OpenGL ES可以:

  • 创建2D和3D图形
  • 创建更复杂的图形,比如数据虚拟化、模拟飞行,或者视频游戏
  • 访问底层图形设备

根据需要向项目中添加其它框架

还有许多框架可以添加到你的程序里。当你决定使用一个框架但项目里却没有引入这个框架时,你就需要将它加入到你的项目里。

将别的框架添加到工程里

1 打开工程

2 点击项目名,显示project editor

3 在TARGETS列表中选中要添加框架的工程

4 点击project editor顶部的Build Phases

5 点击Link Binary With Libraries前面的三角形打开这个分组

6 通过点击添加(+)来添加一个框架

7 在列表中选择一个框架,然后点击Add按钮

 

ios开发——实用技术篇OC篇&iOS的主要框架的更多相关文章

  1. ios开发——实用技术篇OC篇&获取内存使用情况

    获取内存使用情况 iOS 获取 当前设备 可用内存 及当前 应用 所占内存 (-- ::) 转载 ▼ 标签: ios 设备 可用内存 所占内存 内存 it 分类: iOS // 获取当前设备可用内存及 ...

  2. ios开发——实用技术篇OC篇&获取设备唯一标识

    获取设备唯一标识 WWDC 2013已经闭幕,IOS7 Beta随即发布,界面之难看无以言表...,简直就是山寨Android. 更让IOS程序猿悲催的是,设备唯一标识的MAC Address在IOS ...

  3. ios开发——实用技术篇Swift篇&播放MP3

    播放MP3 // MARK: - 播放MP3 /*----- mp3 ------*/ //定时器- func updateTime() { //获取音频播放器播放的进度,单位秒 var cuTime ...

  4. ios开发——实用技术篇Swift篇&拍照

    拍照 // MARK: - 拍照 func fromPhotograph() { if UIImagePickerController.isSourceTypeAvailable(.Camera) { ...

  5. ios开发——实用技术篇Swift篇&照片选择

    照片选择 // MARK: - 选择照片 /*----- 选择照片 ------*/ @IBAction func addImageButtonClick() { let actionSheet = ...

  6. ios开发——实用技术篇Swift篇&系统声音

    系统声音 // MARK: - 系统声音 /*----- 系统声音 ------*/ @IBAction func systemSound() { //建立的SystemSoundID对象 var s ...

  7. ios开发——实用技术篇Swift篇&视频

    视频 // MARK: - 播放视频 /*----- 播放视频 ------*/ func moviePlayerPreloadFinish(notification:NSNotification) ...

  8. ios开发——实用技术篇Swift篇&录音

    录音 // MARK: - 录音 /*----- 录音 ------*/ var recorder:AVAudioRecorder? //录音器 var player:AVAudioPlayer? / ...

  9. ios开发——实用技术篇Swift篇&地址薄、短信、邮件

    //返回按钮事件 @IBAction func backButtonClick() { self.navigationController?.popViewControllerAnimated(tru ...

随机推荐

  1. delete drop truncate

    一.相同点 1 truncate.不带where子句的delete.drop都会删除表内的数据2 drop.truncate都是DDL语句(数据定义语言),执行后会自动提交 二.不同点 1trunca ...

  2. Source Insight中文乱码

    搜索都是c++的代码,本来想下一个Vc,想了下,决定下个eclipse for C++,anyway,n次n久时间下载失败后,我接受了推荐,先下了个Source Insight来看代码.然后问题就出现 ...

  3. Selenium2Library系列 keywords 之 _SelectElementKeywords 之 list_selection_should_be(self, locator, *items)

    def list_selection_should_be(self, locator, *items): """Verifies the selection of sel ...

  4. STM32查看系统时钟

    调用库函数RCC_GetClocksFreq,该函数可以返回片上的各种时钟的频率 函数原形  void  RCC_GetClocksFreq(RCC_ClocksTypeDef*  RCC_Clock ...

  5. 【windows核心编程】IO完成端口(IOCP)复制文件小例前简单说明

    1.关于IOCP IOCP即IO完成端口,是一种高伸缩高效率的异步IO方式,一个设备或文件与一个IO完成端口相关联,当文件或设备的异步IO操作完成的时候,去IO完成端口的[完成队列]取一项,根据完成键 ...

  6. 微软控制台带来的PHP控制台输出问题

    /** * 测试文件包含方式对跨平台的影响 * 控制台下测试. * 默认的文件编码为 UTF-8 */ function testChinese() { $file = __DIR__ . '/con ...

  7. Ubuntu中使用pyUSB读取鼠标或键盘的数据程序

    参考 :http://www.orangecoat.com/how-to/read-and-decode-data-from-your-mouse-using-this-pyusb-hack 要注意的 ...

  8. oc_转_NSArrray 和 NSMutableArrray

    Objective C 中除了可以使用C中的基本数组外,如 int[5];,char word[] = {‘a’, 'b’, 'c’};,Foundation 还提供了 NSArray 类.Found ...

  9. 坚持自学的第二天,bootstrap初入门

    前言 昨天,初步学完了jekyll目录结构与Liquid语法的应用与认识. 日志 今天刚入门,做了一个bootstrap导航栏,但是选中状态不行,找了JS中写好的API,写法与视频中讲的有点不一样,但 ...

  10. C++多态分析(polymorphisn)

    前言 借着这次学校的生产实习来回顾下C++的多态,这里讨论下C++的多态以及实现原理.我都是在QT下使用C++的,就直接在QT下进行演示了 多态介绍 面向对象语言中最核心的几个理念就是:封装.继承.多 ...