本書全面概括了使用隻果公司官方SDK為iPhone/iPod Touch開發應用程序的方方面面,包括開發工具、編程語言和各種框架庫。書中全方位覆蓋了iPhone編程,包括UIKit、多點觸摸、Quartz
Core、音頻、視頻、地理定位、地址簿、網絡編程等內容,詳細介紹了UIKit組件,並配以實用的例子,簡要介紹了Objective-C,重點講解其與C/C++的異同之處,並介紹了幾種Objective-C特有的語法概念。本書還專門介紹如何自行編碼實現專用高級特效︰CoverFlow和Flip Page。
本書適合具有一定編程經驗同時又希望進行iPhone開發的程序員閱讀。書中的各種提示和技巧無論對iPhone開發的新手和資深程序員都大有裨益,本書還可以作為iPhone SDK開發的參考手冊,在需要時快速查找特定組件的相關內容。
目錄
第1章 iPhone SDK初探
1.1 應用程序剖析
1.1.1 Xcode揭密
1.2 安裝iPhone SDK
1.2.1 開發所需資源
1.2.2 iPhone模擬器
1.2.3 下載並安裝iPhone SDK
1.3 配備iPhone
1.4 構建並安裝應用程序
1.4.1 模型-視圖-控制器
1.4.2 應用程序模板
1.4.3 Xcode項目布局
1.4.4 原型
1.4.5 添加框架
1.4.6 設置活躍SDK
1.4.7 構建應用程序
1.4.8 安裝應用程序
1.5 轉換到Objective-C
1.5.1 消息機制
1.5.2 類和方法的聲明
1.5.3 實現
1.5.4 屬性
1.5.5 協議
1.5.6 類別
1.5.7 替位
1.5.8 其他資源
第2章 Interface Builder︰Xcode中制作GUI的GUI
2.1 窗口、視圖和視圖控制器
2.2 現有模板
2.3 新建模板
2.4 用戶界面元素
2.4.1 控制器
2.4.2 數據視圖
2.4.3 輸入和數據
2.4.4 窗口、視圖和欄
2.5 查看器
2.6 設計UI
2.6.1 窗口
2.6.2 視圖控制器
2.6.3 視圖
2.6.4 創建視圖間聯系
2.6.5 在代碼中添加聯系
2.7 從項目中移除Interface Builder
第3章 介紹UI Kit
3.1 基本用戶界面元素
3.2 窗口和視圖
3.2.1 創建窗口和視圖
3.2.2 顯示視圖
3.2.3 史上最無用的應用程序︰HelloView
3.2.4 行為解釋
3.2.5 從UIView派生
3.2.6 傳統廢柴程序︰HelloWorld
3.2.7 行為解釋
3.3 視圖控制器
3.3.1 創建視圖控制器
3.3.2 從Interface Builder載入視圖
3.3.3 方向變換
3.3.4 棄置視圖控制器
3.3.5 使用視圖控制器的Hello World︰ControllerDemo
3.3.6 行為解釋
3.3.7 進一步學習
3.4 文本視圖
3.4.1 創建文本視圖
3.4.2 賦予內容
3.4.3 顯示HTML
3.4.4 網頁源碼閱讀器︰SourceReader
3.4.5 行為解釋
3.4.6 進一步學習
3.5 導航欄與控制器
3.5.1 創建導航控制器
3.5.2 導航控制器屬性
3.5.3 添加分段控件
3.5.4 添加工具欄
3.5.5 分頁導航練習︰PageDemo
3.5.6 行為解釋
3.5.7 進一步學習
3.6 轉場動畫
3.6.1 創建轉場
3.6.2 附加轉場
3.6.3 翻頁轉場︰FlipDemo
3.6.4 行為解釋
3.6.5 進一步學習
3.7 操作表單與警報
3.7.1 警報
3.7.2 操作表單
3.7.3 解除操作表單
3.7.4 世界末日(待批準)︰EndWorld
3.7.5 行為解釋
3.7.6 進一步學習
3.8 表格視圖與控制器
3.8.1 創建表格
3.8.2 表格單元
3.8.3 實現多選
3.8.4 編輯與掃動刪除
3.8.5 重新載入表格
3.8.6 簡單的文件瀏覽器︰TableDemo
3.8.7 行為解釋
3.8.8 進一步學習
3.9 操縱狀態欄
3.9.1 隱藏狀態欄
3.9.2 狀態欄風格
3.9.3 狀態欄方向
3.10 應用程序徽章
3.10.1 顯示應用程序徽章
3.10.2 移除應用程序徽章
3.10.3 進一步學習
3.11 應用程序服務
3.11.1 掛起與復原
3.11.2 程序終止
3.12 調用Safari
3.13 發起電話呼叫
第4章 多點觸摸事件與界面幾何
4.1 界面幾何結構體介紹
4.1.1 CGPoint
4.1.2 CGSize
4.1.3 CGRect
4.2 處理多點觸摸事件
4.2.1 UITouch通知
4.2.2 UIEvent
4.2.3 事件處理
4.2.4 例子︰點觸計數器
4.2.5 例子︰單擊並拖曳
4.2.6 處理多點觸摸
4.2.7 捏合檢測︰PinchMe
4.2.8 Tracking多點觸摸圖標跟蹤︰TouchDemo
4.2.9 行為解釋
4.2.10 進一步學習
第5章 Quartz Core圖層編程
5.1 了解圖層
5.1.1 圖層層次結構
5.1.2 尺寸與位置
5.1.3 排布與顯示
5.1.4 繪制
5.1.5 變換
5.1.6 圖層動畫
5.1.7 圖層變換
5.1.8 玩轉圖層︰BounceDemo
5.1.9 行為解釋
5.1.10 進一步學習
第6章 喧囂︰Audio Toolbox和 AVFoundation
6.1 AVFoundation框架
6.1.1 音頻播放器
6.1.2 播放器屬性
6.1.3 播放聲音
6.1.4 代理方法
6.1.5 儀表計數
6.2 構建一個VU表︰AVMeter
6.2.1 行為解釋
6.2.2 進一步學習
6.3 音頻服務
6.3.1 行為解釋
6.4 音頻隊列
6.4.1 音頻隊列的結構
6.4.2 供應音頻輸出
6.4.3 音頻緩沖區
6.4.4 回調函數
6.4.5 音量控制
6.4.6 例子︰PCM播放器
6.4.7 行為解釋
6.4.8 進一步學習
6.5 錄音
6.5.1 音頻隊列結構體
6.5.2 供應音頻輸入
6.5.3 音頻緩沖區
6.5.4 回調函數
6.5.5 訪問原始數據
6.5.6 寫入文件
6.5.7 例子︰錄音機
6.5.8 行為解釋
6.5.9 進一步學習
6.6 振動
第7章 CFNetwork網絡編程
7.1 套接字編程基礎
7.1.1 套接字類型
7.1.2 CFSocket
7.1.3 CFSocketContext
7.1.4 套接字流
7.1.5 CFSocket例子︰笑話服務器
7.1.6 進一步學習
7.2 CFHTTP與CFFTP
7.2.1 CFHTTP
7.2.2 CFFTP
7.2.3 進一步學習
第8章 定位︰Core Location
8.1 Core Location管理器
8.1.1 查詢參數
8.1.2 提交查詢
8.1.3 接收更新
8.1.4 完成查詢
8.1.5 錯誤處理
8.1.6 土話Core Location︰WhereYouAt
8.1.7 行為解釋
8.1.8 進一步學習
第9章 地址簿框架
9.1 訪問地址簿
9.1.1 高層地址簿函數
9.1.2 查詢地址簿
9.1.3 創建記錄
9.1.4 操縱記錄
9.1.5 多值屬性
9.1.6 使用字典
9.1.7 圖像數據
9.1.8 進一步學習
9.2 地址簿界面
9.2.1 聯系人視圖
9.2.2 聯系人選取器
9.2.3 進一步學習
第10章 UI Kit進階設計
10.1 通用控件
10.1.1 基類UIControl
10.1.2 分段控件
10.1.3 開關
10.1.4 滑塊
10.1.5 文本字段控件
10.1.6 按鈕
10.1.7 分頁控件
10.1.8 進一步學習
10.2 偏好設置表格
10.2.1 創建偏好設置表格
10.2.2 顯示偏好設置表格
10.2.3 偏好設置表格的例子︰ShootStuffUp
10.2.4 行為解釋
10.2.5 進一步學習
10.3 分段列表
10.3.1 創建分段列表
10.3.2 添加索引條
10.3.3 顯示分段列表
10.3.4 一個更好的文件瀏覽器︰TableDemo
10.3.5 行為解釋
10.3.6 進一步學習
10.4 進度與活動指示器
10.4.1 小小轉子︰UIActivityIndicatorView
10.4.2 嫌轉子俗就用UIProgressView
10.4.3 網絡活動指示器
10.4.4 進一步學習
10.5 圖像
10.5.1 圖像對象
10.5.2 玩轉圖像和圖案︰ImageFun
10.5.3 圖像視圖︰UIImageView
10.5.4 圖像選取器
10.6 鍵盤屬性
10.6.1 鍵盤風格
10.6.2 鍵盤外觀
10.6.3 回車鍵
10.6.4 自動大寫
10.6.5 自動更正
10.6.6 安全文本輸入
10.7 選取器
10.7.1 創建選取器
10.7.2 顯示選取器
10.7.3 讀取選取器
10.7.4 挑選你的鼻子︰NosePicker
10.7.5 行為解釋
10.7.6 進一步學習
10.8 時間/日期選取器
10.8.1 創建時間/日期選取器
10.8.2 顯示日期選取器
10.8.3 讀取日期
10.8.4 選取獨立日︰DatePicker
10.8.5 行為解釋
10.8.6 進一步學習
10.9 標簽欄
10.9.1 標簽欄控制器
10.9.2 構建一個標簽欄控制器
10.9.3 可定制按鈕
10.9.4 導航
10.9.5 代理的動作
10.9.6 又一個教科書式的例子︰TabDemo
10.9.7 行為解釋
10.9.8 進一步學習
10.10 感應器與設備信息
10.10.1 讀取設備方向
10.10.2 讀取設備信息
10.10.3 讀取加速計
10.10.4 近距離感應器
10.10.5 進一步學習
10.11 滾動視圖
10.11.1 創建滾動視圖
10.11.2 屬性
10.11.3 代理方法
10.11.4 滾動中的氣象地圖︰BigImage
10.11.5 行為解釋
10.11.6 進一步學習
10.12 網頁視圖
10.12.1 創建網頁視圖
10.12.2 顯示網頁視圖
10.12.3 加載內容
10.12.4 導航
10.12.5 代理方法
10.12.6 Google搜索工具︰WebDemo
10.12.7 行為解釋
10.12.8 進一步學習
第11章 應用程序設定
11.1 字典和屬性列表
11.1.1 創建字典
11.1.2 管理關鍵字
11.1.3 寫入屬性列表
11.1.4 讀取屬性列表
11.1.5 進一步學習
11.2 偏好設置束
11.2.1 添加關鍵字
11.2.2 讀取偏好設置束的值
11.2.3 進一步學習
第12章 Cover Flow
12.1 用SDK編寫Cover Flow︰CovertFlow
12.1.1 行為解釋
12.1.2 進一步學習
第13章 頁面翻轉
13.1 頁面翻轉的例子︰PageControl
13.1.1 行為解釋
13.1.2 進一步學習
13.2 用于多個視圖的PageScrollView
13.2.1 行為解釋
第14章 媒體播放器框架
14.1 電影播放器控件
14.1.1 屬性
14.1.2 開始和停止播放電影
14.1.3 通知
14.1.4 進一步學習
1.1 應用程序剖析
1.1.1 Xcode揭密
1.2 安裝iPhone SDK
1.2.1 開發所需資源
1.2.2 iPhone模擬器
1.2.3 下載並安裝iPhone SDK
1.3 配備iPhone
1.4 構建並安裝應用程序
1.4.1 模型-視圖-控制器
1.4.2 應用程序模板
1.4.3 Xcode項目布局
1.4.4 原型
1.4.5 添加框架
1.4.6 設置活躍SDK
1.4.7 構建應用程序
1.4.8 安裝應用程序
1.5 轉換到Objective-C
1.5.1 消息機制
1.5.2 類和方法的聲明
1.5.3 實現
1.5.4 屬性
1.5.5 協議
1.5.6 類別
1.5.7 替位
1.5.8 其他資源
第2章 Interface Builder︰Xcode中制作GUI的GUI
2.1 窗口、視圖和視圖控制器
2.2 現有模板
2.3 新建模板
2.4 用戶界面元素
2.4.1 控制器
2.4.2 數據視圖
2.4.3 輸入和數據
2.4.4 窗口、視圖和欄
2.5 查看器
2.6 設計UI
2.6.1 窗口
2.6.2 視圖控制器
2.6.3 視圖
2.6.4 創建視圖間聯系
2.6.5 在代碼中添加聯系
2.7 從項目中移除Interface Builder
第3章 介紹UI Kit
3.1 基本用戶界面元素
3.2 窗口和視圖
3.2.1 創建窗口和視圖
3.2.2 顯示視圖
3.2.3 史上最無用的應用程序︰HelloView
3.2.4 行為解釋
3.2.5 從UIView派生
3.2.6 傳統廢柴程序︰HelloWorld
3.2.7 行為解釋
3.3 視圖控制器
3.3.1 創建視圖控制器
3.3.2 從Interface Builder載入視圖
3.3.3 方向變換
3.3.4 棄置視圖控制器
3.3.5 使用視圖控制器的Hello World︰ControllerDemo
3.3.6 行為解釋
3.3.7 進一步學習
3.4 文本視圖
3.4.1 創建文本視圖
3.4.2 賦予內容
3.4.3 顯示HTML
3.4.4 網頁源碼閱讀器︰SourceReader
3.4.5 行為解釋
3.4.6 進一步學習
3.5 導航欄與控制器
3.5.1 創建導航控制器
3.5.2 導航控制器屬性
3.5.3 添加分段控件
3.5.4 添加工具欄
3.5.5 分頁導航練習︰PageDemo
3.5.6 行為解釋
3.5.7 進一步學習
3.6 轉場動畫
3.6.1 創建轉場
3.6.2 附加轉場
3.6.3 翻頁轉場︰FlipDemo
3.6.4 行為解釋
3.6.5 進一步學習
3.7 操作表單與警報
3.7.1 警報
3.7.2 操作表單
3.7.3 解除操作表單
3.7.4 世界末日(待批準)︰EndWorld
3.7.5 行為解釋
3.7.6 進一步學習
3.8 表格視圖與控制器
3.8.1 創建表格
3.8.2 表格單元
3.8.3 實現多選
3.8.4 編輯與掃動刪除
3.8.5 重新載入表格
3.8.6 簡單的文件瀏覽器︰TableDemo
3.8.7 行為解釋
3.8.8 進一步學習
3.9 操縱狀態欄
3.9.1 隱藏狀態欄
3.9.2 狀態欄風格
3.9.3 狀態欄方向
3.10 應用程序徽章
3.10.1 顯示應用程序徽章
3.10.2 移除應用程序徽章
3.10.3 進一步學習
3.11 應用程序服務
3.11.1 掛起與復原
3.11.2 程序終止
3.12 調用Safari
3.13 發起電話呼叫
第4章 多點觸摸事件與界面幾何
4.1 界面幾何結構體介紹
4.1.1 CGPoint
4.1.2 CGSize
4.1.3 CGRect
4.2 處理多點觸摸事件
4.2.1 UITouch通知
4.2.2 UIEvent
4.2.3 事件處理
4.2.4 例子︰點觸計數器
4.2.5 例子︰單擊並拖曳
4.2.6 處理多點觸摸
4.2.7 捏合檢測︰PinchMe
4.2.8 Tracking多點觸摸圖標跟蹤︰TouchDemo
4.2.9 行為解釋
4.2.10 進一步學習
第5章 Quartz Core圖層編程
5.1 了解圖層
5.1.1 圖層層次結構
5.1.2 尺寸與位置
5.1.3 排布與顯示
5.1.4 繪制
5.1.5 變換
5.1.6 圖層動畫
5.1.7 圖層變換
5.1.8 玩轉圖層︰BounceDemo
5.1.9 行為解釋
5.1.10 進一步學習
第6章 喧囂︰Audio Toolbox和 AVFoundation
6.1 AVFoundation框架
6.1.1 音頻播放器
6.1.2 播放器屬性
6.1.3 播放聲音
6.1.4 代理方法
6.1.5 儀表計數
6.2 構建一個VU表︰AVMeter
6.2.1 行為解釋
6.2.2 進一步學習
6.3 音頻服務
6.3.1 行為解釋
6.4 音頻隊列
6.4.1 音頻隊列的結構
6.4.2 供應音頻輸出
6.4.3 音頻緩沖區
6.4.4 回調函數
6.4.5 音量控制
6.4.6 例子︰PCM播放器
6.4.7 行為解釋
6.4.8 進一步學習
6.5 錄音
6.5.1 音頻隊列結構體
6.5.2 供應音頻輸入
6.5.3 音頻緩沖區
6.5.4 回調函數
6.5.5 訪問原始數據
6.5.6 寫入文件
6.5.7 例子︰錄音機
6.5.8 行為解釋
6.5.9 進一步學習
6.6 振動
第7章 CFNetwork網絡編程
7.1 套接字編程基礎
7.1.1 套接字類型
7.1.2 CFSocket
7.1.3 CFSocketContext
7.1.4 套接字流
7.1.5 CFSocket例子︰笑話服務器
7.1.6 進一步學習
7.2 CFHTTP與CFFTP
7.2.1 CFHTTP
7.2.2 CFFTP
7.2.3 進一步學習
第8章 定位︰Core Location
8.1 Core Location管理器
8.1.1 查詢參數
8.1.2 提交查詢
8.1.3 接收更新
8.1.4 完成查詢
8.1.5 錯誤處理
8.1.6 土話Core Location︰WhereYouAt
8.1.7 行為解釋
8.1.8 進一步學習
第9章 地址簿框架
9.1 訪問地址簿
9.1.1 高層地址簿函數
9.1.2 查詢地址簿
9.1.3 創建記錄
9.1.4 操縱記錄
9.1.5 多值屬性
9.1.6 使用字典
9.1.7 圖像數據
9.1.8 進一步學習
9.2 地址簿界面
9.2.1 聯系人視圖
9.2.2 聯系人選取器
9.2.3 進一步學習
第10章 UI Kit進階設計
10.1 通用控件
10.1.1 基類UIControl
10.1.2 分段控件
10.1.3 開關
10.1.4 滑塊
10.1.5 文本字段控件
10.1.6 按鈕
10.1.7 分頁控件
10.1.8 進一步學習
10.2 偏好設置表格
10.2.1 創建偏好設置表格
10.2.2 顯示偏好設置表格
10.2.3 偏好設置表格的例子︰ShootStuffUp
10.2.4 行為解釋
10.2.5 進一步學習
10.3 分段列表
10.3.1 創建分段列表
10.3.2 添加索引條
10.3.3 顯示分段列表
10.3.4 一個更好的文件瀏覽器︰TableDemo
10.3.5 行為解釋
10.3.6 進一步學習
10.4 進度與活動指示器
10.4.1 小小轉子︰UIActivityIndicatorView
10.4.2 嫌轉子俗就用UIProgressView
10.4.3 網絡活動指示器
10.4.4 進一步學習
10.5 圖像
10.5.1 圖像對象
10.5.2 玩轉圖像和圖案︰ImageFun
10.5.3 圖像視圖︰UIImageView
10.5.4 圖像選取器
10.6 鍵盤屬性
10.6.1 鍵盤風格
10.6.2 鍵盤外觀
10.6.3 回車鍵
10.6.4 自動大寫
10.6.5 自動更正
10.6.6 安全文本輸入
10.7 選取器
10.7.1 創建選取器
10.7.2 顯示選取器
10.7.3 讀取選取器
10.7.4 挑選你的鼻子︰NosePicker
10.7.5 行為解釋
10.7.6 進一步學習
10.8 時間/日期選取器
10.8.1 創建時間/日期選取器
10.8.2 顯示日期選取器
10.8.3 讀取日期
10.8.4 選取獨立日︰DatePicker
10.8.5 行為解釋
10.8.6 進一步學習
10.9 標簽欄
10.9.1 標簽欄控制器
10.9.2 構建一個標簽欄控制器
10.9.3 可定制按鈕
10.9.4 導航
10.9.5 代理的動作
10.9.6 又一個教科書式的例子︰TabDemo
10.9.7 行為解釋
10.9.8 進一步學習
10.10 感應器與設備信息
10.10.1 讀取設備方向
10.10.2 讀取設備信息
10.10.3 讀取加速計
10.10.4 近距離感應器
10.10.5 進一步學習
10.11 滾動視圖
10.11.1 創建滾動視圖
10.11.2 屬性
10.11.3 代理方法
10.11.4 滾動中的氣象地圖︰BigImage
10.11.5 行為解釋
10.11.6 進一步學習
10.12 網頁視圖
10.12.1 創建網頁視圖
10.12.2 顯示網頁視圖
10.12.3 加載內容
10.12.4 導航
10.12.5 代理方法
10.12.6 Google搜索工具︰WebDemo
10.12.7 行為解釋
10.12.8 進一步學習
第11章 應用程序設定
11.1 字典和屬性列表
11.1.1 創建字典
11.1.2 管理關鍵字
11.1.3 寫入屬性列表
11.1.4 讀取屬性列表
11.1.5 進一步學習
11.2 偏好設置束
11.2.1 添加關鍵字
11.2.2 讀取偏好設置束的值
11.2.3 進一步學習
第12章 Cover Flow
12.1 用SDK編寫Cover Flow︰CovertFlow
12.1.1 行為解釋
12.1.2 進一步學習
第13章 頁面翻轉
13.1 頁面翻轉的例子︰PageControl
13.1.1 行為解釋
13.1.2 進一步學習
13.2 用于多個視圖的PageScrollView
13.2.1 行為解釋
第14章 媒體播放器框架
14.1 電影播放器控件
14.1.1 屬性
14.1.2 開始和停止播放電影
14.1.3 通知
14.1.4 進一步學習
序
參與iPhone破解開發社區這麼久以來,我常常被問到一個問題,那就是︰你覺得iPhoneSDK到底怎麼樣。對于購買了本書的讀者,我需要花點工夫給出答案。簡而言之,隻果公司的iPhone
SDK帶來了一些非常棒的高層功能,厘清了一種可怕的混亂局面。然而,深深埋藏在SDK怡人外表之下的,卻是一組無序的、設計低劣的框架,但是這些低劣之物中的某些成員卻又非常適用于一些SDK所不適合的領域。無疑,對于想要針對AppStore進行開發的人而言,依靠SDK已經足可以編寫出質量優秀、功能強大的應用程序(若非如此,我也不會寫這本書)。對于大多數希望開發出不錯的軟件的開發者來說,SDK所提供的接口已經足夠了,不過大多數人並不清楚他們到底錯過了哪些功能。而對那些在開源世界里成長起來的人來說,iPhone的SDK不過是滄海一粟。
你現在可以了解到,開發者接口有兩組︰SDK提供的,以及隻果公司自己使用的。盡管這二者之間有一定重疊,但是在我的另外一本書iPhone Open Application Development中介紹的許多類與框架,都會是你聞所未聞的。你對它們聞所未聞,是因為它們並不存在于SDK當中。我們iPhone破解開發社區中的許多人通過直接破解iPhone的操作系統而發現了它們。我們經過日以周計的工作,導出類與符號表,不斷進行出錯查錯的試驗,最終拼湊出了iPhone用戶界面包以及其他許多框架的“基因圖譜”,其中包括許多現在仍然處于保密狀態的接口。通過開源工具鏈構建iPhone軟件的開發者,使用的正是這些底層API。我們發現,隻果公司的許多應用程序也同樣正是利用了這些底層API,從而可以做到一些SDK根本不允許的行為。
相對于SDK開發者而言,使用開源工具鏈的開發者通過這些底層API獲得了一種優勢,而且在我看來,這些API也提供了比官方SDK更好的開發框架。存在于設備上的許多框架都被悄悄地隱藏了起來,使得AppStore的開發者無法使用它們的功能。當你要想構建有競爭力的應用程序時,就會發現很多被隱藏的功能正是關鍵所在,而這樣的應用程序卻恰恰可以使隻果公司在與他們自己預置軟件的對手的競爭中獲得優勢,這絕非巧合。在這些隱藏的接口中間,最突出的就是對Core Surface框架的使用限制,這個框架可以令開發者有能力直接將原始像素繪制到屏幕表面,並充分利用圖像加速功能。缺少了這個框架,你就需要耗時費力地去榨取程序的性能,才能令需要2D顯示的應用程序達到滿意的效果,這些程序包括電影播放器、視頻攝像機以及高性能2D游戲,比如我的免費任天堂模擬器。在編寫類似︰Flash或者Java這樣的應用程序時,如果需要像樣一點的性能,也需要這個關鍵框架。另外一組缺失的API是能夠訪問iTunes音樂的接口。這就是Nate True的SDK版本’Tap lap Revolution不再從你的汀unes曲庫中挑選歌曲的原因,也正是因為這樣,你才只能從第三方程序庫中找到像SynchStep(它會根據你的步伐播放相應節奏的音樂)這麼酷的音樂應用程序。即使是簡單如後台運行或者顯示狀態欄圖標這樣的功能,也只存在于被AppStore所禁止的API之中。更不用說開源的iPhone編譯器,令你可以做到許多SDK無能為力的事情。
從單純的技術角度來講,開源編譯器構建的應用程序既可以使用SDK接口,也可以使用底層“私有”接口,完全取決于你願意使用哪一組頭文件。對于Xocde也同樣成立︰未見諸文檔的私有接口可以被輕易地引入你的項目中,只要簡單地指引SDK找到正確的頭文件。這樣在開發應用程序時,你就有了4種可能的工具組合來選擇。
如果你是商業開發者或者是設計在自己企業內部部署的軟件,那麼確實只有一條可行之路,就是使用本書中所記錄的這些官方批準的API。然而,如果你是開源愛好者,並希望你的代碼更優雅,那麼你應該更關心去自由自在地編寫軟件——而不是帶著鐐銬和枷鎖。若是這樣,建議你不要僅僅使用本書中能找到的API,而要進一步擴展你的知識,了解眾多可以找到的未公開的API和框架。正是開源社區第一個為iPhone建立了開放的編譯器以及網上在線社區軟件庫,我們歡迎優美的、功能完整的應用程序。
你現在可以了解到,開發者接口有兩組︰SDK提供的,以及隻果公司自己使用的。盡管這二者之間有一定重疊,但是在我的另外一本書iPhone Open Application Development中介紹的許多類與框架,都會是你聞所未聞的。你對它們聞所未聞,是因為它們並不存在于SDK當中。我們iPhone破解開發社區中的許多人通過直接破解iPhone的操作系統而發現了它們。我們經過日以周計的工作,導出類與符號表,不斷進行出錯查錯的試驗,最終拼湊出了iPhone用戶界面包以及其他許多框架的“基因圖譜”,其中包括許多現在仍然處于保密狀態的接口。通過開源工具鏈構建iPhone軟件的開發者,使用的正是這些底層API。我們發現,隻果公司的許多應用程序也同樣正是利用了這些底層API,從而可以做到一些SDK根本不允許的行為。
相對于SDK開發者而言,使用開源工具鏈的開發者通過這些底層API獲得了一種優勢,而且在我看來,這些API也提供了比官方SDK更好的開發框架。存在于設備上的許多框架都被悄悄地隱藏了起來,使得AppStore的開發者無法使用它們的功能。當你要想構建有競爭力的應用程序時,就會發現很多被隱藏的功能正是關鍵所在,而這樣的應用程序卻恰恰可以使隻果公司在與他們自己預置軟件的對手的競爭中獲得優勢,這絕非巧合。在這些隱藏的接口中間,最突出的就是對Core Surface框架的使用限制,這個框架可以令開發者有能力直接將原始像素繪制到屏幕表面,並充分利用圖像加速功能。缺少了這個框架,你就需要耗時費力地去榨取程序的性能,才能令需要2D顯示的應用程序達到滿意的效果,這些程序包括電影播放器、視頻攝像機以及高性能2D游戲,比如我的免費任天堂模擬器。在編寫類似︰Flash或者Java這樣的應用程序時,如果需要像樣一點的性能,也需要這個關鍵框架。另外一組缺失的API是能夠訪問iTunes音樂的接口。這就是Nate True的SDK版本’Tap lap Revolution不再從你的汀unes曲庫中挑選歌曲的原因,也正是因為這樣,你才只能從第三方程序庫中找到像SynchStep(它會根據你的步伐播放相應節奏的音樂)這麼酷的音樂應用程序。即使是簡單如後台運行或者顯示狀態欄圖標這樣的功能,也只存在于被AppStore所禁止的API之中。更不用說開源的iPhone編譯器,令你可以做到許多SDK無能為力的事情。
從單純的技術角度來講,開源編譯器構建的應用程序既可以使用SDK接口,也可以使用底層“私有”接口,完全取決于你願意使用哪一組頭文件。對于Xocde也同樣成立︰未見諸文檔的私有接口可以被輕易地引入你的項目中,只要簡單地指引SDK找到正確的頭文件。這樣在開發應用程序時,你就有了4種可能的工具組合來選擇。
如果你是商業開發者或者是設計在自己企業內部部署的軟件,那麼確實只有一條可行之路,就是使用本書中所記錄的這些官方批準的API。然而,如果你是開源愛好者,並希望你的代碼更優雅,那麼你應該更關心去自由自在地編寫軟件——而不是帶著鐐銬和枷鎖。若是這樣,建議你不要僅僅使用本書中能找到的API,而要進一步擴展你的知識,了解眾多可以找到的未公開的API和框架。正是開源社區第一個為iPhone建立了開放的編譯器以及網上在線社區軟件庫,我們歡迎優美的、功能完整的應用程序。
網路書店
類別
折扣
價格
-
新書87折$308