第一次接触苹果手机是在我的同学家里,他用的iPhone 5,不过现在苹果手机已经升级iPhone 6啦。
他说,苹果手机就是不一样,就是任性。
Mac操作系统 聊天用aim,类似于国内QQ,图片设计用iPhoto,类似于国内Photoshop,web设计用iweb,类似于国内的Dreamweaver。还有苹果商店,苹果音乐itunes。。。。。。
苹果,apple的理念就是不一样,也许Steve jobs是就是受上帝启发开发MAC,据说英国科学家牛顿通过苹果落地发现万有引力定律,接着便发现牛顿第一,第二定律。。。。。。他的灵感也来自于上帝。
其中苹果系统与Windows系统最大的不同,就是集成开发环境。
苹果系统用xcode,而国内用visual studio,微软集成开发环境。我一直使用visual studio编程。接触xcode集成开发环境,也许是同学的要求,他以前学过Android手机开发,与c#项目开发,现在改学苹果编程。他说做苹果程序员,工资待遇高,高于学Android,PHP语言。
初探xcode
Xcode是苹果公司向开发人员提供的集成开发环境(非开源),用于开发Mac OS X、iOS的应用程序。 其前身是继承自NeXT的Project Builder,运行于苹果公司的Mac操作系统下。Xcode 2.0 是开发人员建立OS X 应用程序的最快捷方式,也是利用新的苹果电脑公司技术的最简单的途径。Xcode 2.0 将OS X 的轻松使用,UNIX 能量以及高性能的开发技术集合在一起。
introduction
Xcode前身是继承自NeXT的Project Builder。
The Xcode suite 包含有GNU Compiler Collection自由软件 (GCC、 apple-darwin9-gcc-4.0.1 以及 apple-darwin9-gcc-4.2.1, 默认的是第一个),并支持 C语言、C++、Fortran、Objective-C、Objective-C++、Java、AppleScript、Python以及Ruby,还提供Cocoa、Carbon以及Java等编程模式。协力厂商更提供了 GNU Pascal,Free Pascal, Ada, C#, Perl, Haskell 和 D语言。Xcode套件使用 GDB作为其后台调试工具。
Xcode也可被用为iPhone OS的开发环境。
Xcode 4.0于2011年3月9日正式发行。该版本非Apple开发者注册会员亦能从Mac App Store中付费下载, 收取US$4.99的费用。
Xcode主要版本是Xcode 4.5,支持iOS6,可以在Mac App Store免费下载,亦可在iOS开发者计划网站下载。
Xcode最新版本是Xcode 6
Xcode 3.0 是开发人员建立 Mac OS X 应用程序的最快捷方式,也是利用新的苹果电脑公司技术的最简单的途径。Xcode 3.0将Mac OS X的轻松使用,UNIX 能量以及高性能的开发技术集合在一起。
不管你用C、C++、 Objective-C 或Java编写程序,在 AppleScript 里编写脚本,还是试图从另一个奇妙的工具中转移编码,你会发现 Xcode 编译速度极快。每次操作都很快速和轻松。
Xcode是苹果公司向开发人员提供的集成开发环境(非开源),用于开发Mac OS X,iOS的应用程序。其运行于苹果公司的Mac操作系统下。
不管你用C、C++、Objective-C或Java编写程序,在AppleScript里编写脚本,还是试图从另一个奇妙的工具中转移编码,你会发现 Xcode 编译速度极快。每次操作都很快速和轻松。
苹果公司为用户提供了全套免费的Cocoa程序开发工具(Xcode)。Mac OS X一起发行,在苹果公司官方的网站下载。与国内安装visual studio 类似。
功能:
编译器
Xcode 4 的核心部分是苹果电脑公司下一代业界标准的 gcc编译器gcc 4.0。新的编译器利用许多先进的最优化技术帮你从现存编码中获得更多性能。从超级计算世界借鉴来的自动向量化(Auto-vectorization)技术可以帮助你释放每台 Intel 系统中速度引擎的能量,而不需要编写向量化编码。其他的最优化工具则支持反馈定向的最优化,以及隐藏模块分析。
快捷键
文件
CMD + N: 新文件; CMD + SHIFT + N: 新项目; CMD + O: 打开;
CMD + S: 保存; CMD + SHIFT + S: 另存为;
CMD + W: 关闭窗口; CMD + SHIFT + W: 关闭文件
CMD + [: 左缩进;CMD + ]: 右缩进;
CMD + CTRL + LEFT: 折叠;CMD + CTRL + RIGHT: 取消折叠;
CMD + CTRL + TOP: 折叠全部函数;CMD + CTRL + BOTTOM: 取消全部函数折叠;
CTRL + U: 取消全部折叠;
CMD + D: 添加书签; CMD + /: 注释或取消注释;
CTRL + .: 参数提示; ESC: 自动提示列表
调试
CMD + \: 设置或取消断点;
CMD + OPT + \: 允许或禁用当前断点;
CMD + OPT + B: 查看全部断点;
CMD + RETURN: 编译并运行(根据设置决定是否启用断点);
CMD + R: 编译并运行(不触发断点);
CMD + Y: 编译并调试(触发断点);
CMD + SHIFT + RETURN: 终止运行或调试;
CMD + B: 编译;
CMD + SHIFT + K: 清理;
海量内存
Xcode将赋予你创建诸如计算和渲染引擎应用程序的能力,这些应用程序使用64位内存定址。这非常适合数据集中的应用程序,其通过访问内存中的数据运行速度更快,远胜于磁盘访问。Xcode将为你提供工具来建立并调试适合 Intel Core i5, i7 和 Mac OS X Lion 的 32 或 64 位应用程序,还可以让你创建包含32位和64位执行能力的 Fat Binaries。
构建提速
众所周知,在构建中引进多重处理器可以提高速度,Xcode 能帮你实现这个明显的结论。利用支持 Rendezvous 的分布式构建功能,可以轻易地把编译工作量分散到闲置的电脑上来寄放构建,或者更好是在单独的电脑上开发一个专门的 Xserve 构建寄放区,快速处理那些耗时的任务。
Java开发
Xcode 4 拥有众多功能,为 Java 开发人员赋予了更多的开发能力。利用改进的 Code Sense 索引及 Ant 项目模板,Java 用户可以继续使用他们的标准 Java 包,并构建具有 Xcode 关键生产功能的工具。Java 代码填充为你提供类别名、方法、变量及其他关键信息。在 Xcode 中创建 Java应用程序比以往更容易。
输入转移
因为 Xcode 支持 CodeWarrior 风格相关项目参考,所以可以保证把 CodeWarrior 项目文件快速方便地转移到 Xcode。因为 Xcode 兼容 CodeWarrior 风格在线编码汇编,所以从 CodeWarrior 到 Xcode 转变的消耗得到降低, 也使得开发人员手动调整应用程序的临界性能部分。苹果电脑公司的 Mac OS X 综合开发环境Xcode 为各种类型的 Mac OS X软件项目提供项目编辑、搜索和浏览,文件编辑,项目构建和调试设备等功能。
Xcode 可用来辅助开发应用程序、工具、架构、数据库、嵌入包、核心扩展和设备驱动程序。Xcode 支持开发人员使用 C、 C++、Objective C、 AppleScript 和 Java。
Xcode 能够和 Mac OS X 里众多其它的工具协作,例如综合用户界面结构应用程序;编译器如 gcc、javac 和jikes;还有调试工具如 gdb。
另外,你可以用 AppleScript Studio 组增加一个 Aqua 界面到系统和应用程序脚本、命令行工具、以及网络应用程序中。以上三者无论如何都能在任何平台组合成最强大的脚本环境。
远程调试
调试全屏幕应用程序(比如游戏)具有很大的挑战性。将调试窗口放在什么位置呢?有了 Xcode 2.0 的绘图远程调试,所有强大的 Xcode 调试功能(例如数据格式程序、Fix、Continue)都可以在远程机器上用来调试应用程序。利用与远程调试阶段的加密连接,Xcode 可以保证你的数据安全。
xcode项目实例:
创建 Object-C 程序,与visual studio创建C语言项目一样,语法:hello world
start
进入主界面方式
-- 打开现有project : 点击右边的历史记录, 就能够打开现有的project;
-- 创建project : 点击第一个 Create a new Xcode Project 就可以创建一个新project;
-- 导入project : 点击 Check out an existing project 能够导入一个已经创建的project;
创建一个命令行程序 : 选择 创建project界面的 OS X --> Command Line Tool 程序, 即创建了一个命令行程序, Cocoa Application 是创建有界面的程序;
-- ios 项目 : ios项目是为手机和平板开发的应用;
-- OS X 项目 : OS X 是为 OS 操作系统创建的应用;
创建project : 注明 project名, 公司名称, 类型;
-- Product Name : project名称;
-- Organization Name : 组织名称;
-- Type : 这里选 Foundation, 这是 Object-C project;
3. 创建 IOS 项目
打开 Xcode 并选择创建新project : 弹出菜单中选择 IOS --> Single View Application project;
填写项目信息 :
-- Product Name : 项目名称;
-- Organization Name : 公司标识;
-- Class Prefix : 为了避免用户定义类与 Object-C 类命名冲突问题, 在每一个类之前都加上这个前缀;
-- Devices : 选择应用运行的设备, Universal 表示同事兼容 ipad 和 iphone;
二. Xcode 界面具体解释
1. Xcode 界面简单介绍
(1) 顶部区域
程序运行相关 :
-- 从左至右介绍 : 运行button, 停止button, 为project选择运行平台;
编辑器相关 :
-- 从左至右介绍 : 标准编辑器, 辅助编辑器, 版本号编辑器;
面板控制相关 :
-- 从左至右介绍 : 隐藏左側面板, 隐藏底部面板, 隐藏右側面板;
(2) 左面板
面板介绍 : 该面板是 Xcode project导航面板, 上方的七个button用于切换导航模式;
(3) 底部面板
面板介绍 : 用于 Xcode 显示 控制台调试输出信息;
(4) 右面板
检查器面板 : 依据项目的不同, 包括大量审查器;
库面板 :
-- 库面板简单介绍(从左至右) : 文件模板库, 代码片段库, 对象库, 媒体库;
(5) 具体编辑区
该区域是代码编写主要区域 :
2. 导航面板具体解释
导航面板简单介绍 :
-- 从左至右 : 项目导航, 符号导航, 搜索导航, 问题导航, 測试导航, 调试导航, 断点导航, 日志导航;
(1) 项目导航
项目导航组成 :
-- 源文件 : 在 HelloWorld 文件夹下的 ".h" 和 ".m" 后缀文件是源文件;
-- 属性文件 : 在 HelloWorld 下的 Supporting Files 文件夹下是属性文件 图片等;
-- 单元測试项目 : HelloWorldTest 是project的单元測试项目;
-- 目标应用 : Products 文件夹下的 HelloWorld.app 是目标应用;
(2) 符号导航
符号导航简单介绍 : 用符号显示project中的 类, 项目 和 属性;
-- 表示方式 : C 表示类, M 表示方法, P 表示属性;
-- 高速定位 : 点击相应的方法或者属性, 能高速定位到这个类中;
(3) 搜索导航
搜索导航简单介绍 : 在搜索框中输入要搜索的字符串, 按回车就能够搜索出包括该字符串的类;
(4) 问题导航面板
问题导航面板简单介绍 : 显示项目中存在的警告或者错误;
(5) 測试导航
測试导航简单介绍 : 点击 testExample 后面的运行button, 就会运行该单元測试;
(6) 调试导航
调试导航简单介绍 : 调试导航面板中显示了各线程的具体信息;
加入断点 : 在 OCTViewController.m 中加入一个断点;
開始调试(自己主动推断) : 点击顶部面板中的调试button, 假设代码中有断点, 就会自己主动进入调试状态, 运行到断点时会自己主动停止, 具体调试信息显示在底部的调试输出面板;
调试面板介绍 :
以下从左至右介绍;
-- Continue program execution : 继续运行以下的代码;
-- Step over : 单步调试, 点击一次该button, 运行一行代码, 假设有方法调用, 不会进入方法中;
-- Strp in : 步入调试, 点击该button, 会进入方法中;
-- Step out : 步出调试, 在方法中, 点击该button, 会退出方法, 运行方法外的单步调试;
(7) 断点导航
断点导航简单介绍 : 列出全部的断点, 方便管理断点;
(8) 日志导航
日志导航简单介绍 : 列出项目开发过程中 构建, 生成, 运行过程, 每次该过程都能够通过日志面板查看;
3. 检查器面板
检查面板分类 :
-- 普通源文件 : 包括 文件检查器 和 高速帮助器;
-- 故事版 : 界面文件, 除了文件检查器 和 高速帮助器之外, 还有 身份检查器, 属性检查器, 大小检查器, 连接检查器;
文件检查器 :
-- Identity and Type : File Name(文件名称), File Type(文件类型), Full Path(路径);
-- Text Settings : Text Encoding(文件编码使用字符集), Indent Using(缩进), Wrap lines(自己主动换行);
高速帮助器 : 将光标停留在系统类的时候, 该面板会显示该类的 參考手冊, 使用指南 和 演示样例代码;
界面设计相关检查器 : 用户选中 ".storyboard" 或者 ".xib" 后缀的文件时, 会多出另外四个检查器;
-- 身份检查器 : 管理界面组件类 实现类, 恢复ID 等标识性的属性;
-- 属性检查器 : 管理界面组件 拉伸方式, 背景色 等属性;
-- 大小检查器 : 管理界面组件 宽高 xy轴坐标 等属性;
-- 连接检查器 : 管理界面组件 与程序代码之间的关联性;
4. 库面板
库面板简单介绍 : 从左至右介绍;
-- 文件库模板 : 管理文件模板, 能够高速创建指定类型文件, 能够直接拖入项目中;
-- 代码片段库 : 管理各种代码片段, 能够直接拖入源代码中;
-- 对象库 : 界面组件, 能够直接拖入 故事板中;
-- 媒体库 : 管理各种 图片, 音频 等多媒体资源;
三. Xcode 帮助系统具体解释
帮助系统作用 : Object-C 开发中须要调用非常多系统的类, 须要了解每一个类的 使用方法, 通过 Xcode 帮助系统能够查询这些类的使用方法;
1. 高速帮助面板
右面板中的高速面板显示内容 : 该类继承的父类, 遵循的协议, 类所在框架, 点击Reference 中的链接, 能够进入类的具体介绍;
类具体介绍页面 : 通过 高速帮助面板 中的 Reference 中的链接, 能够进入该页面;
类方法分类界面 : 该界面与具体介绍界面是同一个, 下拉就可以;
2. 直接搜索
搜索 : 通过随意链接进入类具体介绍界面之后, 能够在上方的输入框中输入keyword, 就可以搜索相关的 类, 方法, 协议 或者 函数;
3. 代码自己主动提示
提示方式 : 代码编辑区域, 按住 option 键, 然后将光标移动到类上, 会变成问号, 点击就会出现以下的提示框;
四. Hello World 程序
1. 文件扩展名介绍
C语言源文件后缀 : ".c";
C++语言源文件后缀 : ".cc", ".cpp";
头文件 : ".h";
Object-C源程序 : ".m";
Object-C++源程序 : ".mm";
C/C++/Object-C/Object-C++生成的中间文件 : ".o";
C/C++/Object-C/Object-C++生成的可运行文件 : ".out";
2. 程序源代码及解析
程序源代码 :
/* 导入 Foundation 框架下的 Foundation.h 文件 */
#include <Foundation/Foundation.h>
/* 程序入口函数 */
int main(int argc, char * argv[])
{
/* 自己主动释放池, 该环境中运行的语句会自己主动回收所创建的对象 */
@autoreleasepool
{
/* Foundation 中的输出函数, 可输出字符串, 对象等 */
NSLog(@"Hello World"); /* @"Hello World", 加上 @ 是为了与 C 中的字符串区分 */
}
return 0;
}
/* 导入 Foundation 框架下的 Foundation.h 文件 */
#include <Foundation/Foundation.h>
/* 程序入口函数 */
int main(int argc, char * argv[])
{
/* 自己主动释放池, 该环境中运行的语句会自己主动回收所创建的对象 */
@autoreleasepool
{
/* Foundation 中的输出函数, 可输出字符串, 对象等 */
NSLog(@"Hello World"); /* @"Hello World", 加上 @ 是为了与 C 中的字符串区分 */
}
return 0;
}
(1) 导入框架头文件
导入头文件语句 : #import <a/b.h> 是导入 a 框架 中的 b.h 头文件;
框架简单介绍 : 框架是 一系列类 函数的集合, Cocoa QuickTime 都被封装成了框架, Cocoa 包括了 Foundation 和 Application Kit 等组件;
(2) 自己主动释放池
内存管理 : 在早期的 Object-C 须要手动管理内存的分配和回收, Object-C 2.0 引入了 ARC(自己主动引用计数) 和 自己主动释放池, 不在进行手动内存管理;
自己主动释放池 : 使用 "@autoreleasepool{}" 包裹的代码位于 Object-C 的自己主动释放池中, 这些语句会自己主动回收创建的对象, 不用进行手动的内存管理;
(3) 字符串输出
NSLog()函数 : 该函数是 Foundation 框架提供的一个函数, 该函数能够输出 字符串 对象等;
-- NS 前缀说明 : Cocoa 框架中全部的 类 函数 常量 都会加上 NS 前缀;
-- @"string" 说明 : @符号 用于区分 Object-C 与 C语言字符串, 加上 @ 符号的时 Object-C 字符串;
3. 编译运行代码
LLVM Clang 编译器语法 : clang -fobjc-arc -framwork 框架名称 源程序 -o 输出结果 ;
-- -fobjc-arc 參数 : 启用 Object-C 的 ARC 自己主动技术功能;
-- -o 參数 : 假设不带, 默认 输出 a.out ;
编译运行结果 :
octopus-2:ios octopus$ clang -fobjc-arc -framework Foundation 01-HelloWorld.m
octopus-2:ios octopus$ ls
01-HelloWorld.m a.out
octopus-2:ios octopus$ ./a.out
2014-08-10 00:22:55.670 a.out[3394:507] Hello World
octopus-2:ios octopus$ clang -fobjc-arc -framework Foundation 01-HelloWorld.m
octopus-2:ios octopus$ ls
01-HelloWorld.m a.out
octopus-2:ios octopus$ ./a.out
2014-08-10 00:22:55.670 a.out[3394:507] Hello World
可以发布软件啦。
值得一提的是,在中国国内用Android系统的多,Windows系统的多,苹果系统很少。
毕竟中国老百姓多,“民以食为天”,苹果似乎永远是贵族。xcode集成开发环境也不开源,也难以推广。