第一部分:IOS开发概述
1. IOS 系统架构
iOS是基于UNIX的,就系统的稳定性而言,要比其他操作系统好很多,我们完全可以相信这个操作系统!
iOS的系统架构分为四个层次:
1)可触摸层
2)媒体服务层
3)核心服务层
4)核心操作系统层
如下图:
2. iOS系统架构中各层次的功能
可触摸层(Cocoa Touch):为应用程序开发提供各种有用的框架,并且大部分均与用户界面有关,本质上来说它负责用户在iOS设备上的触摸交互操作。
媒体服务层(Media Services):负责提供用于构建应用程序的图形和声音的API,可以在应用程序中使用各种媒体文件,进行音频与视频的录制,图形绘制,以及制作基础的动画效果。
核心服务层(Core Services):这一层提供了访问Core OS层的硬件功能并包含了Foundation框架。正因为如此,这一层提供了构建iOS应用程序所需的大量基础元件,例如字符串、数组以及其他通用数据类型。核心服务层可以访问iOS的一些服务,比如网络连接、文件访问、数据库、用户定位等。
核心操作系统层(Core OS ):这一层次包含了iOS操作系统的很多基础组件,其中包括:系统内核、内存管理、文件系统、电源管理、网络组件和设备驱动等,可以直接和硬件设备进行交互。
3. iOS系统框架表格
框架名称 |
功能 |
Foundation |
提供OC的基础类(像NSObject)、基本数据类型等 |
UIKit |
创建和管理应用程序的用户界面 |
QuartzCore |
提供动画特效以及通过硬件进行渲染的能力 |
CoreGraphics |
提供2D绘制的基于C的API |
SystemConfiguration |
检测当前网络是否可用和硬件设备状态 |
AVFoundation |
提供音频录制和回放的底层API,同时负责管理音频硬件 |
CFNetwork |
访问和配置网络,像HTTP、FTP和Bonjour Services |
CoreFoundation |
提供抽象的常用数据类型,如Unicode strings、XML、URL等 |
CoreLocation |
使用GPS和WIFI获取位置信息 |
框架名称 |
功能 |
GameKit |
为游戏提供网络功能:点对点互联和游戏中的语音交流 |
AddressBook |
提供访问用户联系人信息的功能 |
AddressBookUI |
提供一个用户界面,显示存储在地址簿中的联系人信息 |
AudioToolBox |
提供音频录制和回放的底层API,同时负责管理音频硬件 |
AudioUnit |
提供一个接口,让应用程序可以对音频进行处理 |
MapKit |
为应用程序提供内嵌地图的接口 |
MediaPlayer |
提供播放视频和音频的功能 |
MessageUI |
提供视图控制接口用以处理E-mail和短信 |
OpenGLES |
提供动画特效以及通过硬件进行渲染的能力 |
StoreKit |
为应用程序提供在程序运行中消费的支持 |
4. iOS 和 android 系统架构对比
Android是基于Linux内核设计的,在Linux内核上面运行了一个Java虚拟机,虚拟机再运行软件。像是在一个系统上面又套了一个系统,所以占内存较大、运行速度略低。
IOS是基于UNIX的,直接与底层硬件通信。系统底层、应用框架、应用软件都是采用C/C++或者Objective-C写的,所以有很高的运行效率。
第二部分: Hello World
环境:
OS X : 10.9.2
XCODE : 5.1.1
目标:
1. 新建项目
2. 搭建界面
3. 监听按钮点击事件
4. 获取文本框内容,并将结果显示在文本标签中
笔记:
1. 创建stroyboard项目,如图
2. 搭建界面
3. 监听按钮点击事件
4. 获取文本框内容,并将结果显示在文本标签中
备注:
1. 如果当点击【Editor】按钮,编辑区域呈左右页面,
可以在【view】-【Assistant Editor】- 【Assistant Editor on Botton】,
修改为 上下结构,进行呈现。
2. 可以发现,在连线的时候,自动会生成 【IBOutlet】【IBAction】以IB为前缀的词语,
是因为利用 Interface Builder 工具的原因。 Outlet - 是告诉程序可以操作对象。
3. 通常,在一个类的内容,使用自己的属性,为了提高效率,可以使用成员变量代替属性,
比如:_txtUserName.text 就可以代替(self.lblUserName.text)。
定义属性的目的是:为了其他类访问本类时,保证内部数据安全。
4. 当输入文本框的时候,会自动弹出一个键盘。当点击【完成】按钮后,
想把键盘也隐藏掉,可以使用 [self.view endEditing:YES];
--- iCode , 爱生活。