iPhone开发简介
iPhone开发简介
一、 Windows xp下搭建iPhone开发环境
VMWare
2、 创建虚拟机
使用File->New->Virtual
Machine创建一个虚拟机。在选择操作系统时,选择Other->FreeBSD
64-bit
5、 在虚拟机VMWare7.0上安装Mac OS
用Darwin.iso镜像进行引导。先装载镜像文件:在刚才建立的虚拟机Settings->Hardware中,选择CD/DVD(IDE)设备,选择右侧的Use ISO image file,点Browse加载Darwin.iso,装载完镜像文件后,现在启动虚拟机。在出现提示界面后,根据提示选择启动方式,在CD/DVD(IDE)设备里将Darwin镜像改为苹果的DMG镜像即可(记得给“Connected”选项打勾)。进入了苹果系统的安装过程;
在这里特别提一下,有的人在进行到选择安装盘的步骤时看不到硬盘选项,在屏幕上方的菜单中找到“实用工具”->“磁盘工具”;对你的虚拟硬盘执行“抹掉”操作即可。
换上Darwin或者Rebel EFI引导镜像,否则你将不能成功引导安装好的MAC OS X系统。
二、 iPhone开发语言
iPhone平台采用Objective_C 作为开发语言,其内核是C语言,基于C语言实现了OOP的一些特性,通常写做ObjC,是扩充C的面向对象语言
• Objective-C
1、Object-c使用.m后缀作为代码文件的扩展名
2、Object-c使用#import代替#include来导入声明文件。并且编译器保证#import不会被重复导入。
3、尽管Object-c也支持printf()进行控制台打印文本信息,但是更推荐使用NSLog(),并且它会自动在文本后面添加'\n'。
4.Object-c曾经也叫做NextStep,为了更好的体现其OOP的特性,NextStep里所有的对象都继承自NSObject,这点和Java的单根继承很类似。所以其Application Kit里的类库前缀基本都是NS*。而其Cocoa Foundation里的类库前缀基本都为NSCF*。
5.Object-c提供了BOOL类型,但这个BOOL类型和C++里的并不一样,在C++里一切非0值的东西都为true,而为0值的为false。但是Object-c里1为true并被宏定义为YES,0为false并被宏定义为NO。
6.Object-c里仍然继承了C语言的传统,其primitive type只有int、char、float、BOOL并用它们表达一切。
7.Object-c采用@interface来进行接口的声明,并采用@implementation对声明进行实现。
• Cocoa Frameworks
包含以下两个子框架
Foundation
Foundation全称Foundation Framework,是Cocoa的一个子开发框架。Foundation里包含了Cocoa中最基本的一些类,它们在一个Mac应用程序中通常负责对象管理、内存管理、容器等相关数据结构的操作。
UIKit
UIKit框架为你的程序提供可视化的底层构架,包括窗口、视图、控件类和管理这些对象的控制器。这一层中的其它框架允许你访问用户的联系人和图片信息,以及设备上的加速器和其它硬件特征。
• MVC模式
• MVC(Model+View+Controller)是一种帮助你把代码功能和显示划分开来的设计模式
• MVC模式在交互式设计中有非常广泛的使用
• Model:较为下层的数据引擎,负责管理好它的实体中所集成的数据
• View:为用户提供交互界面
• Controller:连接二者的桥梁
• 内存管理
Apple提供了两套内存管理的解决方案
1、 老的方案使用retaain计数:每个对象都有一个retain计数,用来描述有多少个其它对象在使用自己。当对象的retain计数为0时,改对象将被释放。
2、 10.5版本的软件提供了新的方案:垃圾收集器。它管理整个对象视图。垃圾收集器扫描整个视图,如果法相某个对象没有被任何其它对象使用,该对象将被释放。
两个方案的优缺点:retain计数使用起来有些麻烦,retain还可能产生一个麻烦:对象A retain对象B,而同时对象B retain 对象A,这时两个对象都没有办法得到释放,这就是retain循环。如果使用垃圾收集器,系统只能在10.5版本之前的系统上运行,同时垃圾收集器会耗费CPU时间来寻找垃圾内存,这样会时程序性能降低,如果程序是处理大量音频或视频,垃圾收集器的内存扫描可能会导致处理不顺畅。
例子:时间对象 now
使用Garbage Collenction
当不再使用now对象时,要让now指向nil
now=nil;
使用Retain计数
[now release];
Now=nil;
三、 开发环境
Xcode:代码编辑器
Interface Build:界面设计工具
四、 项目实例
1、 基本数据持久性
应用程序的沙盒,每个应用程序都有自己的/Document文件夹,并且应用程序仅能读取各自的/Document目录中的内容.这里主要介绍使用iPhone的嵌入式SQLite3
if (sqlite3_open([[self dataFilePath] UTF8String], &database)!=SQLITE_OK)
2、 导航控制器和表视图
导航控制器维护一个视图控制器栈,任何类型的视图控制器都可以放入栈中,栈是后进先出的,也可以是先进后出,一个视图都有一个视图控制器,最底层的视图,其视图称为根视图控制器,根视图控制器是被导航器推入栈中的第一个视图控制器。
浙公网安备 33010602011771号