出版時間:2012-9-1 出版社:機械工業(yè)出版社華章公司 作者:Aaron Hillegass,Adam Preble 頁數(shù):365 譯者:黃敏,郝剛
Tag標簽:無
前言
前言如果你正在開發(fā)或者希望進行Mac應(yīng)用開發(fā),那么這本書就是你所需要的。本書是否涵蓋了所有Mac應(yīng)用編程的相關(guān)知識?當然不是,不過本書涉及了Mac開發(fā)接近80%的內(nèi)容。讀者可以在Apple公司的在線文檔中找到剩余的20%,而這20%正是獨屬于你的。本書展示了應(yīng)用開發(fā)的基礎(chǔ),包含了Objective-C語言和Cocoa的主要設(shè)計模式。讀者還可以熟悉最常用的兩個開發(fā)工具:Xcode和Instruments。閱讀完本書之后,讀者就可以理解并使用Apple公司的在線文檔了。本書包含很多代碼。通過這些代碼,筆者將向讀者講解Cocoa社區(qū)的一些慣用法。希望通過實踐這些示例代碼,讀者不僅能夠成為一名Cocoa開發(fā)人員,而且還能夠成為一名優(yōu)秀的Cocoa開發(fā)人員。第4版涉及在MacOSX10.6和10.7中引入的一些技術(shù),包括Xcode4、ARC(AutomaticReferenceCounting,自動內(nèi)存管理技術(shù))、blocks、view-basedtableviews和Mac應(yīng)用商店。本書專門安排一章用于講述iOS的基本開發(fā)。本書適合已經(jīng)具備一些C語言基礎(chǔ)且了解一些面向?qū)ο笾R的開發(fā)人員。假如讀者并不知道C語言或面向?qū)ο蟮母拍?,那么讀者首先應(yīng)該學(xué)習(xí)《Objective-CProgramming:TheBigNerdRanchguide》。讀者并不需要具備Mac編程經(jīng)驗。這是一本實戰(zhàn)類的圖書,因此讀者需要安裝MacOSX系統(tǒng)和開發(fā)工具。Xcode4.2、Apple的IDE都可免費下載、安裝。如果讀者是Mac的付費會員,或者隸屬iOS開發(fā)者聯(lián)盟,也可以從Apple公司的開發(fā)者網(wǎng)站下載Xcode(http://developer.apple.com/)。開發(fā)者注冊成為上述成員,可將自己的應(yīng)用程序提交到Apple公司的Mac應(yīng)用商店或iOS應(yīng)用商店。筆者將盡可能地讓本書更加實用。Aaron HillegassAdam Preble
內(nèi)容概要
本書是在Aaron多年教學(xué)經(jīng)驗的基礎(chǔ)上進行了總結(jié)提煉的精華之作,加之前面3版不斷推敲和完善,已經(jīng)成為學(xué)習(xí)Cocoa編程的入門級經(jīng)典書籍。本書系統(tǒng)介紹了Objective-C語言、Cocoa主要的設(shè)計模式、必要的開發(fā)工具Xcode和Instruments等,同時新引入了ARC、blocks、view-based
table
views和Mac應(yīng)用商店,并專門開辟一章用于介紹在iOS上的基礎(chǔ)開發(fā)。相比于之前的版本,本書在Cocoa框架新特性、新技術(shù)的基礎(chǔ)上,更加側(cè)重實戰(zhàn),也更加結(jié)合應(yīng)用發(fā)展的最新趨勢。全書以具體的實例貫穿,引導(dǎo)讀者通過實踐學(xué)習(xí)Cocoa框架的基本思想。在本書中,讀者不僅能夠看到技術(shù)細節(jié),更能看到不斷剖析、層層遞進的解決問題的思路,甚至可以看到如何查找資料、獲取幫助的方法,幫助讀者建立規(guī)范、科學(xué)的設(shè)計開發(fā)習(xí)慣。閱讀本書不要求讀者擁有任何的Mac編程經(jīng)驗,只需要了解基本的C語言,以及面向?qū)ο蟮闹R即可。相信本書能夠推動蘋果中文社區(qū)的進一步發(fā)展、壯大,也希望能夠?qū)bjective-C和Cocoa框架以及蘋果產(chǎn)品背后一流的技術(shù)實力從細微處展現(xiàn)出來,幫助那些致力于創(chuàng)新、變革以及追求完美的人們。
作者簡介
Aaron
Hillegass,資深蘋果應(yīng)用開發(fā)工程師、培訓(xùn)講師和技術(shù)作家,在使用Cocoa進行開發(fā)方面擁有15年工作經(jīng)驗,具有非常高的知名度和非常大的影響力。曾就職于NeXT和Apple公司,目前在Big
Nerd
Ranch主講Cocoa編程,第一套OpenStep(Cocoa的前身)教程便出自他和本書另一位作者之手。他還寫過多本關(guān)于Cocoa、Objective-C、iPhone和iOS方面的圖書。
Adam
Preble,Mac和iOS軟件程序開發(fā)顧問、資深蘋果應(yīng)用開發(fā)工程師、培訓(xùn)講師和技術(shù)作家,在使用Cocoa、Objective-C以及C/C++進行開發(fā)方面擁有多年工作經(jīng)驗,尤其在應(yīng)用程序用戶體驗方面有獨到的見解。目前在Big
Nerd Ranch開發(fā)Mac和iOS應(yīng)用,也是Cocoa編程的主講教師。
書籍目錄
譯者序
前 言
致 謝
第1章 什么是Cocoa
1.1 歷史簡介
1.2 開發(fā)工具
1.3 編程語言
1.4 對象、類、方法和消息
1.5 框架
1.6 如何閱讀本書
1.7 約定
1.8 常見錯誤
1.9 如何學(xué)習(xí)
第2章 起步
2.1 Xcode
2.1.1 新建項目
2.1.2 main函數(shù)
2.2 Interface Builder
2.2.1 utility區(qū)
2.2.2 空白窗口
2.2.3 頁面布局
2.2.4 dock
2.2.5 創(chuàng)建一個類
2.2.6 創(chuàng)建一個實例
2.2.7 創(chuàng)建連接
2.3 回顧Objective-C
2.3.1 Objective-C中的類型和常量
2.3.2 查看頭文件
2.3.3 編輯實現(xiàn)文件
2.3.4 編譯和運行
2.3.5 awakeFromNib
2.4 文檔
2.5 你做了什么
2.6 應(yīng)用程序運行過程
第3章 Objective-C
3.1 創(chuàng)建和使用實例
3.2 使用已有的類
3.2.1 給nil發(fā)送消息
3.2.2 NSObject、NSArray、NSMutableArray和NSString
3.2.3 組合和繼承
3.3 創(chuàng)建自己的類
3.3.1 創(chuàng)建LotteryEntry類
3.3.2 更改main.m文件
3.3.3 實現(xiàn)Description方法
3.3.4 編寫初始化器initializer
3.3.5 帶參數(shù)的初始化器
3.4 調(diào)試器
3.5 你做了什么
3.6 靜態(tài)分析器
3.7 補充知識:消息機制工作原理
3.8 挑戰(zhàn)
第4章 內(nèi)存管理
4.1 手動內(nèi)存管理
4.1.1 創(chuàng)建沒有內(nèi)存泄漏的彩票程序
4.1.2 dealloc函數(shù)
4.1.3 自動釋放對象
4.1.4 retain計數(shù)規(guī)則
4.2 Accessor方法
4.3 使用ARC
4.3.1 強引用
4.3.2 弱引用
4.3.3 ARC補充知識
第5章 Target/Action
5.1 一些NSControl子類的常見用法
5.1.1 NSButton
5.1.2 NSSlider
5.1.3 NSTextField
5.2 開始SpeakLine示例
5.3 XIB文件中的布局設(shè)置
5.4 實現(xiàn)SpeakLineAppDelegate類
5.5 補充:通過代碼設(shè)置
5.6 挑戰(zhàn)
5.7 調(diào)試建議
第6章 Helper對象
6.1 委托
6.2 NSTableView及其dataSource
6.3 用戶界面布局
6.4 建立連接
6.5 編輯SpeakLineAppDelegate.m文件
6.5.1 在實現(xiàn)委托時的常見錯誤
6.5.2 對象委托
6.6 補充知識:委托是怎樣工作的
6.7 挑戰(zhàn)1:創(chuàng)建委托
6.8 挑戰(zhàn)2:創(chuàng)建一個數(shù)據(jù)源
第7章 鍵-值編碼和鍵-值觀察
7.1 鍵-值編碼
7.2 綁定
7.3 鍵-值觀察KVO
7.4 使對象的鍵可觀察
7.5 Properties
7.6 補充知識1:鍵路徑
7.7 補充知識2:鍵-值觀察
第8章 NSArrayController
8.1 從RaiseMan應(yīng)用開始
8.2 鍵-值編碼和nil
8.3 添加排序功能
8.4 補充知識:不使用NSArrayController進行排序
8.5 挑戰(zhàn)1
8.6 挑戰(zhàn)2
第9章 NSUndoManager
9.1 NSInvocation
9.2 NSUndoManager的工作機制
9.3 為RaiseMan添加撤銷功能
9.4 鍵-值觀察
9.5 撤銷編輯操作
9.6 插入后立即編輯
9.7 補充知識:窗口和undo管理器
第10章 Archiving
10.1 NSCoder和NSCoding
10.1.1 編碼
10.1.2 解碼
10.2 文檔架構(gòu)
10.2.1 Info.plist和NSDocumentController
10.2.2 NSDocument
10.2.3 NSWindowController
10.3 保存和NSKeyedArchiver
10.4 載入和NSKeyedUnarchiver
10.5 為文件類型設(shè)置擴展名和圖標
10.6 補充知識1:避免死循環(huán)
10.7 補充知識2:創(chuàng)建Protocol
10.8 補充知識3:自動保存文檔
10.9 補充知識4:沒有undo功能的基于文檔的應(yīng)用程序
10.10 統(tǒng)一類型標識符
第11章 Core Data基本原理
11.1 NSManagedObjectModel
11.2 Interface
11.2.1 基于視圖的表格視圖
11.2.2 連接和綁定
11.2.3 Core Data 如何工作
11.3 補充知識:基于視圖和基于單元格的表格視圖比較
11.4 挑戰(zhàn)
第12章 NIB文件和NSWindowController
12.1 NSPanel
12.2 向應(yīng)用程序添加面板
12.2.1 設(shè)置菜單項
12.2.2 AppController.m
12.2.3 Preferences.xib
12.2.4 PreferenceController.m
12.3 補充知識:NSBundle
12.4 挑戰(zhàn)
第13章 User Defaults
13.1 NSDictionary和NSMutableDictionary
13.1.1 NSDictionary
13.1.2 NSMutableDictionary
13.2 NSUserDefaults
13.3 設(shè)置Defaults
13.3.1 設(shè)置程序標識符
13.3.2 為defaults的名字建立鍵
13.3.3 注冊defaults
13.4 讓用戶編輯Defaults
13.5 使用Defaults
13.5.1 禁用自動創(chuàng)建未命名新文檔
13.5.2 設(shè)置表格視圖的背景色
13.6 補充知識1:NSUserDefaultsController
13.7 補充知識2:從命令行讀寫Defaults
13.8 挑戰(zhàn)
第14章 使用Notifications
14.1 Notifications 是什么
14.2 Notifications不是什么
14.3 NSNotification
14.4 NSNotificationCenter
14.5 發(fā)布notification
14.6 注冊成為觀察者
14.7 當notification到達時怎么處理
14.8 userInfo字典
14.9 補充知識:Delegates和 Notifications
14.10 挑戰(zhàn)
第15章 使用告警窗口
15.1 讓用戶確認刪除
15.2 挑戰(zhàn)
第16章 本地化
16.1 本地化NIB文件
16.2 字符串表
16.2.1 創(chuàng)建字符串表
16.2.2 使用字符串表
16.3 補充知識1:ibtool
16.4 補充知識2:格式化字符串中符號的順序
第17章 自定義視圖
17.1 視圖層次
17.2 繪制視圖
17.2.1 創(chuàng)建視圖子類的實例
17.2.2 Size Inspector
17.2.3 drawRect
17.3 使用NSBezierPath 繪圖
17.4 NSScrollView
17.5 用程序創(chuàng)建視圖
17.6 補充知識1:單元格
17.7 補充知識2:isFlipped
17.8 挑戰(zhàn)
第18章 圖片和鼠標事件
18.1 NSResponder
18.2 NSEvent
18.3 捕獲鼠標事件
18.4 使用NSOpenPanel
18.4.1 修改XIB文件
18.4.2 代碼編輯
18.5 在視圖中合成圖片
18.6 視圖的坐標系統(tǒng)
18.7 Autoscrolling
18.8 補充知識:NSImage
18.9 挑戰(zhàn)
第19章 鍵盤事件
19.1 NSResponder
19.2 NSEvent
19.3 使用自定義視圖創(chuàng)建一個新的工程
19.3.1 界面布局
19.3.2 創(chuàng)建連接
19.3.3 編寫代碼
19.4 補充知識:Rollovers
19.5 毛邊藍框
第20章 繪制帶屬性的文本
20.1 NSFont
20.2 NSAttributedString
20.3 繪制字符串和屬性字符串
20.4 顯示字母
20.5 讓視圖生成PDF數(shù)據(jù)
20.6 補充知識:NSFontManager
20.7 挑戰(zhàn)1
20.8 挑戰(zhàn)2
第21章 粘貼板和Nil-Targeted Actions
21.1 NSPasteboard
21.2 在BigLetterView 中添加剪切、復(fù)制和粘貼功能
21.3 Nil-Targeted Actions
21.4 補充知識1:哪個對象發(fā)送了action消息
21.5 補充知識2:UTI和剪貼板
21.6 補充知識3:延遲復(fù)制技術(shù)
21.7 挑戰(zhàn)1
21.8 挑戰(zhàn)2
第22章 Categories
22.1 在NSString 中添加方法
22.2 補充知識:聲明私有方法
第23章 拖放
23.1 設(shè)置BigLetterView 為拖動作的源
23.1.1 開始拖操作
23.1.2 釋放以后
23.2 設(shè)置BigLetterView為拖操作的目的
23.2.1 registerForDraggedTypes:
23.2.2 添加高亮效果
23.2.3 實現(xiàn)拖操作目的方法
23.2.4 添加第二個的BigLetterView 對象
23.3 補充知識:Operation Mask
第24章 NSTimer
24.1 界面布局
24.2 建立連接
24.3 為TutorController添加代碼
24.4 補充知識:NSRunLoop
24.5 挑戰(zhàn)
第25章 工作表
25.1 添加sheet窗口
25.1.1 添加outlet和action
25.1.2 界面布局
25.1.3 添加代碼
25.2 補充知識1:contextInfo
25.3 補充知識2:模式化窗口
第26章 創(chuàng)建NSFormatters
26.1 簡單的格式化器類
26.1.1 創(chuàng)建ColorFormatter.h
26.1.2 編輯XIB文件
26.1.3 NSColorList
26.1.4 在字符串中搜索子串
26.1.5 實現(xiàn)基本的格式化器方法
26.2 NSControl類的Delegate
26.3 檢查部分字符串
26.4 返回屬性字符串的格式化器
26.5 補充知識:NSValueTransformer
第27章 打印
27.1 處理頁面設(shè)置
27.2 補充知識:是在屏幕上繪圖嗎
27.3 挑戰(zhàn)
第28章 Web Service
28.1 RanchForecast項目
28.1.1 NSURLConnection
28.1.2 在ScheduleFetcher中添加XML解析功能
28.1.3 界面布局
28.1.4 編寫控制器代碼
28.2 打開URL
28.3 挑戰(zhàn):添加一個WebView
第29章 Blocks
29.1 塊語法
29.1.1 塊內(nèi)部的內(nèi)存和對象操作
29.1.2 塊的可用性
29.1.3 RanchForecast: 異步開發(fā)
29.1.4 接收異步響應(yīng)
29.2 挑戰(zhàn):實現(xiàn)一個Delegate
第30章 iOS開發(fā)
30.1 將RanchForecast移植到iOS
30.2 RootViewController
30.3 添加導(dǎo)航控制器
30.4 ScheduleViewController
30.5 UITableViewController
30.6 視圖控制器切換
30.7 挑戰(zhàn)
第31章 視圖切換
31.1 開始
31.1.1 創(chuàng)建管理視圖控制器類
31.1.2 創(chuàng)建視圖控制器及其XIB文件
31.2 給MyDocument添加視圖切換功能
31.3 調(diào)整窗口尺寸
第32章 Core Data Relationships
32.1 模型編輯
32.2 創(chuàng)建自定義NSManagedObject類
32.2.1 Employee
32.2.2 Department
32.3 界面布局
32.4 事件及nextResponder
第33章 Core Animation
33.1 Scattered
33.2 隱式動畫及action
33.3 挑戰(zhàn)1
33.4 挑戰(zhàn)2
第34章 并發(fā)性
34.1 多線程
34.1.1 巨大的分歧
34.1.2 簡單的Cocoa后臺線程
34.2 Scattered 升級版:Instruments 中的Time Profiling
34.3 NSOperationQueue
34.3.1 Scattered的多線程解決方案
34.3.2 線程的同步處理
34.4 補充知識:更快的Scattered 程序
34.5 挑戰(zhàn)
第35章 Cocoa和OpenGL
35.1 一個簡單的Cocoa/OpenGL應(yīng)用程序
35.2 界面布局
35.3 代碼編寫
第36章 NSTask
36.1 ZIPspector
36.1.1 同步讀取
36.1.2 iPing
36.2 挑戰(zhàn):.tar和.tgz文件
第37章 發(fā)布應(yīng)用
37.1 Build Configurations
37.2 創(chuàng)建Release版本
37.3 應(yīng)用沙箱
37.3.1 權(quán)限
37.3.2 文件訪問與權(quán)限的折中
37.4 蘋果應(yīng)用商店
結(jié)束語
章節(jié)摘錄
版權(quán)頁: 插圖: 相較于復(fù)雜的NSOperation對象創(chuàng)建方式,這里使用了NSOperationQueue的addOperationWittBlock:,來創(chuàng)建NSBlockOperation對象,并將其添加到隊列中。請注意,這里代碼更改還是比較少的,程序最主要的流程也沒有進行改變。一般情況下并不這樣進行多線程的處理,但是可以看到,通過對域內(nèi)變量的引用,鎖定機制幫助開發(fā)者避免了很多復(fù)雜代碼。 34.3.2線程的同步處理 在這個例子中還不需要擔心race conditions,其原因在于,程序設(shè)計時就避免了與后臺線程進行數(shù)據(jù)結(jié)構(gòu)共享。后臺線程的工作只是進行文件夾計數(shù)、打開圖片以及創(chuàng)建thumbnails等。這個例子中唯一的共享數(shù)據(jù)就是Core Animation layers,但它也只是由mian線程進行了修改而已。避免了race conditions,多線程看起來就太簡單了。 并不是所有的多線程都可以通過這種方法來解決,很多時候需要保護代碼塊(或者多個代碼塊),以確保某個時間點上只有一個線程能運行。這通常通過互斥鎖(互相排斥的鎖定)來完成。Objective—C提供了一個簡單的方法來部署互斥鎖——@synchronized指令。 @synchronized指令使用了互斥鎖,這與傳值對象不同。在這個例子中,我們鎖定images對象,就是一個NSMutableArray實例。由于NSMutableArray對象并不是thread—safe(就是說該對象并不是用于多線程操作的),因此,在多線程環(huán)境中進行操作時推薦使用互斥鎖。使用@synchronized指令可以保證:當所有的@synchronized指令在一個確定的對象上操作時,只有一個線程在某個時間點上可以執(zhí)行封裝的代碼塊。因此,如果有兩個線程同時都要調(diào)用addlmage:方法,第一個線程將獲得鎖,可以進行圖片對象的添加;而第二個線程將被鎖住,直到這個鎖被釋放。 讀者可能對為什么NSMutableArray不是thread-safe感到困惑。一個原因是互斥鎖與它有負載關(guān)聯(lián),線程的安全性使得NSMutableArrays對象的性能明顯下降;另一個原因就是,通常情況下鎖定某個代碼塊比進行一個單獨的線程調(diào)用,更有用、也更普遍一些,這樣看起來好像是將對象從一個數(shù)據(jù)結(jié)構(gòu)移動到另一個數(shù)據(jù)結(jié)構(gòu)。 Cocoa提供了一系列的工具用于線程同步,如NSLock和NSCondition。對于這些工具,可以看看NSOperationQueue中的相關(guān)資料,Grand Central Dispatch在《Advanced MacOS XProgramming》中也進行了詳盡的討論。
媒體關(guān)注與評論
Aaron的這本書是Mac OS X編程圖書領(lǐng)域的標桿——措辭優(yōu)雅、精雕細琢,是開發(fā)蘋果應(yīng)用的優(yōu)秀圖書。—— Scott Stevenson經(jīng)過幾個版次的市場檢驗,本書已經(jīng)被公認為從零開始學(xué)習(xí)Cocoa編程的首選。Aaron是少數(shù)(很可能是唯一)全職的專業(yè)Cocoa講師之一,他多年的教學(xué)經(jīng)驗都濃縮于本書中。—— Tim Burks,資深軟件工程師/Nu編程語言創(chuàng)始人如果你是工作在UNIX或Windows平臺上的程序員,希望為Mac OS X開發(fā)一些新應(yīng)用,或者想將應(yīng)用移植到Mac上,那么這本書是必備的參考書和培訓(xùn)資料。—— Kevin H. Spencer,Apple認證技術(shù)協(xié)調(diào)員
編輯推薦
《華章程序員書庫:蘋果開發(fā)之Cocoa編程(原書第4版)》編輯推薦:經(jīng)典暢銷書全新升級,全面且深入地講解了Cocoa編程的各項知識,被譽為Mac OS X編程圖書領(lǐng)域的標桿,是從零開始系統(tǒng)學(xué)習(xí)Cocoa編程的首選!
名人推薦
Aaron的這本書是Mac OS X編程圖書領(lǐng)域的標桿——措辭優(yōu)雅、精雕細琢,是開發(fā)蘋果應(yīng)用的優(yōu)秀圖書。——Scott Stevenson,the ocacao網(wǎng)經(jīng)過幾個版次的市場檢驗,本書已經(jīng)被公認為從零開始學(xué)習(xí)Cocoa編程的首選。Aaron是少數(shù)(很可能是唯一)全職的專業(yè)Cocoa講師之一,他多年的教學(xué)經(jīng)驗都濃縮于本書中?!猅im Burks,資深軟件工程師/Nu編程語言創(chuàng)始人如果你是工作在UNIX或Windows平臺上的程序員,希望為Mac OS X開發(fā)一些新應(yīng)用,或者想將應(yīng)用移植到Mac上,那么這本書是必備的參考書和培訓(xùn)資料?!狵evin H. Spencer,Apple認證技術(shù)協(xié)調(diào)員
圖書封面
圖書標簽Tags
無
評論、評分、閱讀與下載