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

1Object-c使用.m后缀作为代码文件的扩展名

2Object-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-c1true并被宏定义为YES,0false并被宏定义为NO

6.Object-c里仍然继承了C语言的传统,primitive type只有intcharfloatBOOL并用它们表达一切。

 

7.Object-c采用@interface来进行接口的声明,并采用@implementation对声明进行实现。

 

         Cocoa Frameworks

 

包含以下两个子框架

 Foundation

     Foundation全称Foundation Framework,是Cocoa的一个子开发框架。Foundation里包含了Cocoa中最基本的一些类,它们在一个Mac应用程序中通常负责对象管理、内存管理、容器等相关数据结构的操作。

 UIKit       

     UIKit框架为你的程序提供可视化的底层构架,包括窗口、视图、控件类和管理这些对象的控制器。这一层中的其它框架允许你访问用户的联系人和图片信息,以及设备上的加速器和其它硬件特征。

 

         MVC模式

         MVCModel+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、 导航控制器和表视图

导航控制器维护一个视图控制器栈,任何类型的视图控制器都可以放入栈中,栈是后进先出的,也可以是先进后出,一个视图都有一个视图控制器,最底层的视图,其视图称为根视图控制器,根视图控制器是被导航器推入栈中的第一个视图控制器。

posted on 2011-09-26 14:45  Kingly  阅读(566)  评论(0)    收藏  举报