TOP
英國出版界指標大獎肯定!A.F. Steadman 獲年度作家,《史坎德》系列帶你踏上熱血奇幻旅程
Cocoa編程開發者手冊(簡體書)
滿額折

Cocoa編程開發者手冊(簡體書)

商品資訊

人民幣定價:128 元
定價
:NT$ 768 元
優惠價
87668
絕版無法訂購
無法訂購
商品簡介
作者簡介
名人推薦
目次
書摘/試閱

商品簡介

《Cocoa編程開發者手冊》編著者奇斯納爾。
《Cocoa編程開發者手冊》是關于Mac OS X上 CocoaAPI的指南,涵蓋了從用戶界面到網絡編程各個方面的特性。本書共七個部分,詳細敘述了核心的框架,以及其他許多用來構建豐富應用程序的組件,指出了龐大的API中最有價值的地方,指引讀者進一步學習。
《Cocoa編程開發者手冊》適合Mac OS X應用程序開發人員及愛好者閱讀。

作者簡介

作者:(美國)奇斯納爾(David Chisnall) 譯者:江疆 楊武 李亮 霍炬

David Chlsnall,作為實現者和開發人員。他對于Cocoa有著深入的了解。他是GNUstep項目(提供Cocoa APl的開源實現)的活躍貢獻者。參與開創了Etoilé項目來構建GNUstep上的桌面環境。他還創建過一個新的Objective—C運行庫,為clan9編譯器提供Objective—C支持,發表過關于ObjectiVe—C的論文。他為informlT.com撰寫過一個關于Objective—C和CoCoa的系列文章,非常受歡迎。他還是The DefinitiveGuide to the Xen Hypervisor(Addison—Wesley,2008)一書的作者。

名人推薦

對概念細節與技術原理論述非常充分,徹底彌補官方文檔缺憾
本書中Objective-C相關章節堪稱全面而權威
創建APP所需各項技術在本書中得以完整覆蓋,且有機結合
開發成熟Cocoa應用須經過實踐項目磨練,本書可幫你跨越這一門檻
即使無面向對象基礎,閱讀本書時對XCode也毫無不適。

本書的目標是作為一份Mac OS X 上Cocoa API 的指南。我們將詳細敘述核心的框架,以及其他許多用來構建豐富應用程序的組件。
這些API 數量非常龐大。在大多數Cocoa 程序中,你會包含Cocoa.h 這個頭文件,它包含了兩個構成Cocoa 的核心框架。這個頭文件在預處理之后( 包含了所有引用的頭文件) 足有100 000 行之多。如果把預處理后的頭文件打印出來,你將能得到兩倍于本書厚度的手冊,而這還只是包括了核心的API,沒有其他在本書討論過的更高級的部分。
本書希望作為一本指引性的圖書,標出這組龐大的API 中有價值的地方供進一步學習。和許多旅游書籍一樣,這本書也會包含一些“非看不可”的目的地,所有人都應該了解一下,此外還有一些更為有趣但被關注過多的部分。
對Cocoa 這樣的框架更精深的掌握來自于經年的練習和使用它所包含的類。這本書雖然提供了一份導引,但只有在你閱讀了書中的內容并實踐來開發自己的應用之后,才能成為一名OS X 開發專家。
誰該閱讀這本書
這本書面向的是希望學習用Cocoa 的豐富API 開發OS X 應用程序的人。它的目標讀者并非想學iPhone 開發的人。iPhone SDK 雖然是設計為讓有經驗的Mac 程序員能夠很容易學習,而且和桌面API 也共享了很多核心的概念和框架,但仍然是一個獨立的系統。閱讀本書確實能讓你在以后學習iPhone 開發時更容易一些,同時我們也指出了桌面和移動平臺API 的區別,但它不會直接涵蓋iPhone API。
如果你希望學習如何開發Mac OS X 下的豐富應用程序,這本書能幫到你。它涵蓋了所有的核心API——自20 世紀90 年代初期NeXT 的工作站開始就基本沒有變化,只是加入了互聯網絡環境的集成和處理多媒體的內容。
閱讀本書需要一些基本的編程知識,前面的幾章包含了對Objective-C 的介紹,對于已經熟悉類似C 或者Java 語言的讀者應該足夠了。但這一部分并不是為介紹基本編程概念而寫的。
概覽與組織
本書分為七個部分,每個部分都包含一部分的Cocoa API。
“Cocoa 概述”包含Cocoa 的背景,它在OS X 中的地位,它來自哪里。這部分包含并描述了Objective-C 語言,并給讀者提供了用來創建Cocoa 應用的工具的概覽。
在“Cocoa 框架” 中你會接觸到組成Cocoa API 核心的Foundation 和Application Kit 框架。Foundation 提供了底層的核心函數,而Application Kit 則在它之上提供了構建豐富應用所需的特性。這部分介紹了這兩個框架,概述它們如何結合起來,以及如何用它們創建應用程序。你將看到Cocoa 應用程序模型之下的基本概念,包括事件如何傳送、繪圖模型如何工作。在本部分的末尾你將理解如何用Cocoa 創建簡單的應用。
“Cocoa 文檔”涵蓋了用Cocoa 開發文檔驅動應用程序。文檔驅動的應用會給某些持久化模型創建一致的窗口,通常是給文件。Cocoa 包含了很多支持此類應用的代碼。你還會在這部分接觸到Core Data 框架,它處理文檔的自動持久化。
第四部分,“復雜用戶界面”,將深入Application Kit。你會學習到更高級的視圖對象,通過數據源與程序交互,并學會如何給它們動態提供數據。你還會看到如何創建新的視圖對象。
第五部分,“高級圖形技術”,在以上基礎上探索了Cocoa 的一些更復雜的圖形能力。包括桌面和iPhone OS X 都有的Core Animation 框架,讓你能用少量代碼就創建吸引人的動畫效果。這部分還劃出了一小部分討論音頻世界,如何提供用戶界面的聽覺響應。這包括使用OS X 的語音識別和合成API。本部分結束你將可以編寫復雜的多媒體Cocoa 應用程序。
“用戶界面集成”集中于讓應用程序融入OS X 環境的那部分技術,這樣它們就不再像是孤立的程序。這包括與系統搜索功能,以及許多共享存儲,比如地址簿與日歷的集成。
最后一部分,“系統編程”,介紹了Cocoa 的底層特性,包括網絡編程和并發。這包括創建socket 到從遠程URL 下載數據,并探討了Foundation 框架的分布式對象系統。
本書不希望作為Apple 優秀文檔的替代品,Cocoa 的每個類都有附帶的參考,同時有在線版本并隨Xcode 環境提供。其中有很多還提供了包含特定集合的類之間關系的指南。這樣的材料總共有數萬頁。
你不會在書中找到每個類每個方法的詳細描述,如果想仔細了解具體一個類有什么用,可以查看Apple 文檔。但你能找到這些類大多數重要而且常用的特性,以及它們之間的關系。Apple 文檔盡管詳細,但詳細得有點過頭。閱讀本書能幫你找到解決特定問題所需的那個子集。
Apple 提供的示例程序同樣也和本書提供的不同。本書的每個例子都是為了展示Cocoa API 的某個獨立方面的,而Apple 的例子則一般是展示完整API 的完整應用程序。OS X 包含的TextEdit 應用就是這樣一個例子。這是一個功能完整的富文本編輯器,有數千行代碼。如果你希望看到一個Cocoa 的文檔支持和文本系統如何一起工作的詳細例子,那這是不可多得的資源,但在你對Cocoa 還不非常熟悉的時候要理解整份代碼是非常困難的。

目次

第一部分 Cocoa概述
第1章 Cocoa 與Mac OS X
1.1 理解何時該用Cocoa
1.1.1 Carbon
1.1.2 Java
1.1.3 Cocoa
1.1.4 UNIX API
1.1.5 其他選擇
1.2 理解Cocoa 在Mac OS X 中的角色
1.2.1 Cocoa
1.2.2 Quartz
1.2.3 Core Foundation
1.2.4 Darwin
1.2.5 XNU
1.3 概覽

第一部分 Cocoa概述

第1章 Cocoa 與Mac OS X

1.1 理解何時該用Cocoa

1.1.1 Carbon

1.1.2 Java

1.1.3 Cocoa

1.1.4 UNIX API

1.1.5 其他選擇

1.2 理解Cocoa 在Mac OS X 中的角色

1.2.1 Cocoa

1.2.2 Quartz

1.2.3 Core Foundation

1.2.4 Darwin

1.2.5 XNU

1.3 概覽

第2章 Cocoa 的可選語言

2.1 面向對象

2.2 Objective-C

2.2.1 Objective-C 的可選編譯器

2.2.2 與Java 及C++ 的區別

2.2.3 Objective-C 2.0

2.3 Ruby 與Python

2.4 小結

第3章 使用Apple 的開發工具

3.1 獲取Apple 的開發工具

3.2 Interface Builder

3.2.1 Outlet 與Action

3.2.2 Cocoa 綁定

3.2.3 繪制簡單的應用程序

3.3 Xcode

3.3.1 創建簡單的項目

3.3.2 OpenStep Bundle

3.3.3 開發樣例

3.3.4 不用Xcode 來編譯

3.4 Objective-C

3.4.1 為何學習Objective-C

3.4.2 對C 的添加

3.4.3 異常與同步

3.4.4 自省

3.4.5 C 中的Objective-C

3.4.6 Objective-C 2.0

3.4.7 Block

3.4.8 Objective-C++

3.5 Cocoa 規約

3.5.1 命名

3.5.2 內存管理

3.5.3 構造器與初始化器

3.6 小結

第二部分 Cocoa框架

第4章 Foundation: Objective-C 基礎庫

4.1 一般概念

4.1.1 可變的

4.1.2 Class Cluster

4.2 Core Foundation 類型

4.3 基本數據類型

4.3.1 非對象類型

4.3.2 字符串

4.3.3 數字和值的裝箱

4.3.4 數據

4.3.5 緩存和丟棄數據

4.3.6 日期和時間

4.4 容器

4.4.1 比較和排序

4.4.2 原生容器

4.4.3 數組

4.4.4 字典

4.4.5 集合

4.5 枚舉類型

4.5.1 利用高級消息枚舉

4.5.2 利用block 枚舉

4.5.3 支持快速枚舉

4.6 屬性列表

4.6.1 序列化

4.6.2 用戶默認值

4.7 和文件系統交互

4.7.1 Bundle

4.7.2 工作區和文件管理

4.7.3 使用路徑工作

4.7.4 文件訪問

4.8 通知

4.8.1 請求通知

4.8.2 發送通知

4.8.3 發送異步通知

4.8.4 分布式通知

4.9 小結

第5章 應用程序相關概念

5.1 Run Loop

5.2 應用程序和委托

5.3 響應者鏈

5.3.1 事件傳遞

5.3.2 目標與活動

5.3.3 變成首先響應者

5.4 應用程序里的Run Loop

5.5 委托與通知

5.6 視圖層次

5.6.1 窗口

5.6.2 視圖

5.6.3 格子

5.7 總結

第6章 創建圖形用戶界面

6.1 位置視圖

6.2 嵌套視圖

6.2.1 剪裁視圖

6.2.2 滾動視圖

6.2.3 頁簽視圖

6.2.4 分割視圖

6.2.5 方框

6.3 創建視圖

6.3.1 按鈕

6.3.2 文本視圖

6.3.3 數據視圖

6.3.4 菜單

6.4 Cocoa 綁定

6.4.1 鍵—值編碼

6.4.2 鍵—值觀測

6.4.3 公開綁定

6.4.4 通用控制器

6.4.5 綁定與用戶默認值

6.4.6 在Interface Builder 中使用綁定

6.5 小結

第7章 窗口與菜單

7.1 理解窗口

第8章 Cocoa 中的文本

8.1 字符串的構建與析構

8.2 字符串標注

8.3 本地化

8.3.1 本地化的宏定義

8.3.2 Strings 文件

8.3.3 格式字符串的本地化

8.4 文本存儲

8.5 理解字體

8.5.1 轉換字體

8.5.2 羅列字體

8.6 顯示文本

8.6.1 基本繪制

8.6.2 布局管理器

8.6.3 附件(attachment)

8.6.4 文本視圖

8.6.5 文本控件單元

8.7 編寫自定義文本容器

8.8 使用多個文本視圖

8.9 小結

第三部分 Cocoa文檔

第9章 創建文檔驅動型應用程序

9.1 Cocoa 文檔模型

9.1.1 文件類型

9.1.2 文檔對象

9.2 創建應用程序骨架

9.3 創建文檔

9.3.1 載入窗口

9.3.2 建立文檔模型

9.3.3 讀入和保存文檔

9.3.4 文檔創建事件

9.4 擴展Outliner

9.4.1 定義原生文件格式

9.4.2 定義外部文件格式

9.4.3 支持讀入和保存

9.5 支持撤銷

9.5.1 注冊撤銷操作

9.5.2 創建撤銷組

9.5.3 處理撤銷操作

9.5.4 撤銷用戶界面

9.6 給Outliner 增加撤銷功能

9.7 總結

第10章 Core Data

10.1 數據建模介紹

10.2 理解托管對象

10.3 屬性類型

10.4 創建數據模型

10.5 選擇持久存儲

10.5.1 內存存儲

10.5.2 XML 存儲

10.5.3 二進制存儲

10.5.4 SQLite 存儲

10.5.5 自定義存儲

10.6 存儲元數據

10.7 自動還原

10.8 Core Data、Spotlight 與Time Machine

10.9 小結

第四部分 復雜用戶界面

第11章 處理結構化數據

11.1 數據源和委托對象

11.2 表格

11.2.1 表格視圖的繪制

11.2.2 使用排序描述符

11.2.3 定制表格視圖

11.3 大綱視圖

11.3.1 擴展Outliner 示例

11.4 瀏覽器視圖

11.4.1 瀏覽器視圖的委托

11.4.2 創建瀏覽器

11.5 集合視圖

11.5.1 在集合視圖中顯示文件

11.6 用新控件單元定制視圖

11.7 創建主- 從視圖

11.7.1 作為細節視圖的檢視器

11.8 小結

第12章 動態視圖

12.1 多標簽視圖

12.2 分析視圖層級結構

12.3 修改視圖層級結構

12.3.1 改變視圖的父元素

12.3.2 重排視圖

12.3.3 可拖出窗口的標簽

12.4 創建動態輸入表單

12.4.1 用矩陣控件創建表單

12.4.2 用自定義視圖創建表單

12.4.3 用規則編輯器創建表單

12.5 全屏應用程序

12.6 小結

第五部分 高級圖形

第13章 自定義視圖

13.1 圖形上下文

13.2 Core Graphics

13.3 用AppKit 繪圖

13.3.1 繪制形狀

13.3.2 用控件單元繪制

13.3.3 繪制文本

13.3.4 創建新控件單元

13.3.5 繪制位圖

13.3.6 組合圖像

13.4 打印與視圖分頁

13.4.1 打印信息

13.4.2 創建打印任務

13.4.3 視圖分頁

13.4.4 自動分頁

13.5 用調板擴展Interface Builder

13.6 小結

第14章 聲音與視頻

14.1 提示音

14.2 播放簡單的聲音

14.3 理解Cocoa 的影片對象

14.4 加上視頻

14.5 編輯媒體

14.6 低層聲音API

14.7 錄音和錄像

14.8 支持語音

14.9 Cocoa 語音合成

14.10 跟用戶交談

14.11 總結

第15章 高級視覺效果

15.1 簡單的動畫

15.2 Core Animation 綜述

15.2.1 在圖層里繪畫

15.2.2 設置圖層的內容

15.3 理解動畫的概念

15.4 加上簡單動畫

15.5 圖像濾鏡

15.6 定義過渡

15.7 創建復雜的動畫

15.8 Core Animation 三維變換

15.9 OpenGL 與Cocoa 視圖

15.10 Quartz 合成器

15.11 總結

第16章 支持PDF 和HTML

16.1 AppKit 里的HTML

16.2 高級HTML 支持

16.2.1 WebKit 綜述

16.2.2 WebView 委托

16.2.3 編輯HTML

16.3 WebKit 的動態接口

16.4 PDF 和Quartz

16.5 顯示PDF

16.5.1 理解PDF 標注

16.5.2 設置文檔的元數據

16.5.3 編輯PDF

16.6 小結

第六部分 用戶界面集成

第17章 搜索與過濾

17.1 維護文檔索引

17.1.1 創建索引

17.1.2 對文檔索引

17.1.3 搜索一個索引

17.2 顯示搜索欄

17.3 搜索文檔

17.4 Spotlight

17.4.1 監視文件系統事件

17.4.2 為元數據編制索引

17.4.3 創建元數據導入插件

17.4.4 用Spotlight 搜索

17.4.5 Spotlight 的局限性

17.5 斷言

17.5.1 斷言語言

17.5.2 直接創建斷言

17.5.3 使用斷言

17.5.4 顯示斷言編輯器

17.6 Quick Look

17.6.1 預覽包

17.6.2 實現Quick Look 插件

17.7 小結

第18章 聯系人、日歷和私密信息

18.1 地址簿概述

18.1.1 一般概念

18.1.2 集合類

18.2 獲取聯系人的信息

18.3 檢索地址簿

18.4 填寫“ 我” vCard

18.5 在地址簿里增加聯系人

18.6 保存私密信息

18.7 日歷

18.7.1 日歷存儲區的概念

18.7.2 存取事件

18.7.3 新建日歷

18.8 同步數據

18.8.1 使用Apple 的綱要

18.9 小結

第19章 剪貼板

19.1 剪貼板概覽

19.2 剪貼板類型

19.3 對類型進行過濾

19.4 屬性列表數據

19.5 自編碼對象

19.6 文件和剪貼板

19.7 復制和粘貼

19.8 拖動和投放

19.8.1 拖動操作

19.8.2 投放操作

19.8.3 在自定義視圖中實現拖放

19.9 拖放和數據視圖

19.10 小結

第20章 服務

20.1 服務示例

20.2 一個計算服務

20.3 使用服務

20.4 控制服務菜單

20.5 過濾器服務

20.6 小結

第21章 增加腳本支持

21.1 腳本概覽

21.1.1 AppleScript 對象模型

21.1.2 腳本詞匯表

21.2 將對象腳本化

21.2.1 理解AppleScript 對象

21.2.2 提供對象指示符

21.2.3 提供一個腳本定義

21.2.4 處理腳本命令

21.2.5 測試腳本支持

21.3 在Cocoa 程序中寫腳本

21.4 把服務顯露給Automator

21.5 其他的腳本技術

21.5.1 分布式對象

21.5.2 F-Script

21.6 小結

第七部分 系統編程

第22章 聯網

22.1 底層套接字編程

22.2 Cocoa 流

22.3 URL 的處理

22.3.1 創建URL

22.3.2 從URL 裝入

22.3.3 擴展URL 裝載系統

22.4 Bonjour

22.

顯示全部信息

書摘/試閱



這個方法從一個保護條件開始,如果收到的通知是錯誤的對象類型,則立刻中斷。這不是必需的,但是所有KVO通知都會被派發到同一個方法中,所以應該多做一些事情保證安全。如果不是在調試,你可能會想不用這段代碼,或者在return語句之前設置一個斷點,以便在調用錯誤的時候修正它。
這個方法的主體就是一個大的switch語句,以NSKeyValueChangeKindKev為鍵的整數值作為條件,這個值保存在change字典中。這樣可以知道是否發生了這種變化。我們支持三種情況:改變鍵,增加一個子項,移除子項。還有一種情況是替換集合中的一個對象,但我們目前的模型不支持這種做法,所以也就不需要處理這種情況了。
第一種情況在73.86行(代碼清單9.11)。目前只由項目標題變化引發。你可能會覺得這部分代碼比我們需要的復雜,下面這段更簡單的代碼可以替換77—83行。
這樣確實簡單一些,但有一個嚴重問題:這段代碼根本不工作。如果實現了一個這樣的方法,那么會在運行記錄中看到這樣的提示:2009.01.2012:44:44.682 0utliner[27412:813]Error setting value for key path title of object(from bound object(null)):[setValue:forUndefinedKey:]:this class is not key valuecoding—compliant for the key title.
這個錯誤是由撤銷管理器實現的缺陷造成的。prepareWithInvocationTarget:本應返回一個NSProxy的子類。NSProxy是root對象的替代品,它遵循NSObject協議,但是在方法上只實現了一個小的子集。它用于代理對象,因為幾乎所有發送給它的消息都會觸發—forwardlnvocation:調用,允許轉發。不幸的是,在這里NSUndoManager返回的是NSObject子類(其實就是它本身)。
這問題很明顯,當發送給NSUndoManager一個對應的消息時,其中實現的任何方法都會簡單地被調用。轉發機制不起作用了。
創建撤銷時,這是相當嚴重的問題。你無法通過一prepareWithInvationTarget:機制調用NSObject和NSUndoManager實現的任何方法。雖然NSObject實現了基本的KVC機制,也無法在這里使用。
幸好有一個替代方案。NSObject中有一些后備代碼,可以給所有的轉發機制構建一個調用,并傳給一forwardlnvocation:。我們不能用這些代碼來自動構建調用,但仍然可以調用一forwardlnvocation:。每當發送一個由NSObject實現的消息來處理撤銷動作時,都會因此而造成一點點麻煩。

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 668
絕版無法訂購