macOS 應用開發基礎教程
趙君衛 張帆
- 出版商: 人民郵電
- 出版日期: 2018-09-01
- 售價: $648
- 貴賓價: 9.5 折 $616
- 語言: 簡體中文
- 頁數: 586
- 裝訂: 平裝
- ISBN: 7115486409
- ISBN-13: 9787115486400
-
相關分類:
Apple Developer
立即出貨 (庫存 < 4)
買這商品的人也買了...
-
$174$165 -
$680$537 -
$580$493 -
$403macOS軟件安全與逆向分析
-
$450$356 -
$680$537 -
$480$379 -
$500$390 -
$403軟件困局:為什麽聰明的程序員會寫出糟糕的代碼
-
$372$353 -
$505精通 Spring:Java Web 開發與 Spring Boot 高級功能 (Mastering Spring 5, 2/e)
-
$560$437 -
$420$378 -
$560$420 -
$580$458 -
$913最強 iOS 和 macOS 安全寶典
-
$719$683 -
$620$484 -
$294$279 -
$779$740 -
$791Qt 6 開發及實例, 5/e
-
$780$616 -
$714$678 -
$300$225 -
$420$378
相關主題
商品描述
本書是Swift版本的macOS應用開發教程。本書全面介紹和說明瞭macOS平臺中應用開發的系統控件,詳細闡述和探討了應用開發的常用組件、系統框架、應用沙盒處理、上架流程、生產力工具開發等內容,並配有豐富的示例講解。書中還介紹了幾個小型的演示項目,剖析了開發過程、開發思路和關鍵流程代碼,力求讓讀者從基礎知識和項目實踐等多個維度去理解和掌握macOS平臺的應用開發。
本書立足普及基本的macOS應用開發知識,力求每個知識點的講解都簡明扼要,並通過代碼示例演示讓讀者盡快學以致用,非常適合macOS應用開發的初學者閱讀。但是,本書中並沒有介紹Swift的基礎語法,閱讀本書需要讀者瞭解Swift的知識。
作者簡介
趙君衛(微博@劍指人心),中國早期的iOSkai發者,負責開發了zhu名的LBS交友App“飄信”,
曾擔任蘇寧易購移動技術團隊負責人、途牛金融移動技術總監;2014年開始接觸macOS應用開發,
獨立開發了macOS平台上UI設計工具AppX;創建了macOS應用開發網站macdev,
匯聚與macOS相關的開發資源,崇尚自動化開發的理念,打造先進的生產力工具。
張帆(微博@AB人生-東門吹牛西門吹雪),留美博士,
專注於計算機和互聯網技術在諸如信息安全、通信電子、醫療健康等特定行業的應用,
擅長iOS和.NET開發;曾在美國微軟總部和飛利浦醫療北美總部任職;入選浙江省“千人計劃”;
曾任新加坡國立大學訪問學者,現任浙江大學信息與電子工程學院和浙江大學網絡空間安全研究中心副教授,
同時也是新加坡科技設計大學訪問教授。
目錄大綱
第1章準備工作1
1.1 Mac電腦1
1.2 Xcode使用介紹1
1.2.1 Xcode工作區2
1.2.2 xib界面設計相關的工作區和菜單3
1.3工程結構5
1.3.1使用xib方式創建的工程5
1.3 .2使用storyboard方式創建的工程11
第2章窗口對象13
2.1窗口界面的組成14
2.2模態窗口16
2.2.1模態窗口16
2.2.2模態會話窗口16
2.3編程控制窗口17
2.3.1創建窗口對象17
2.3.2窗口通知18
2.3.3 NSWindow的contentView 18
2.3.4設置窗口的image和title 19
2.3.5設置窗口的背景顏色19
2.3.6關閉窗口時終止應用19
2.3.7在窗口標題區域增加視圖20
2.3.8 NSWindow如何正確地保證居中顯示21
2.3.9窗口顯示位置控制21
2.3.10應用關閉後點擊Dock菜單再次打開應用21
2.4窗口的創建和管理21
第3章視圖和滾動條23
3.1基本視圖23
3.1.1坐標系統23
3.1.2 frame和bounds 24
3.1.3坐標轉換25
3.1.4視圖管理25
3.1.5視圖查找25
3.1.6視圖的autoSize控制25
3.1.7視圖的layer屬性27
3.1.8視圖繪製27
3.1.9事件響應28
3.1.10視圖的frame/bounds變化通知28
3.2增效視圖29
3.3滾動條視圖31
3.3.1滾動條視圖工作原理31
3.3.2用代碼創建滾動條視圖32
3.3 .3滾動到zhi定的位置32
3.3.4用代碼實現文本視圖滾動的示例33
3.3.5滾動條的顯示控制34
第4章基本控件35
4.1控件的分類35
4.2控件家族類圖譜35
4.2.1 NSResponder 37
4.2.2 NSView 38
4.2.3 NSControl 38
4.2.4 NSCell 38
4.2.5小結39
4.3文本框39
4.3.1 UI屬性說明40
4.3.2事件響應40
4.3.3文本內容的讀取或修改41
4.3.4特殊按鍵響應處理41
4.4文本視圖42
4.4.1 UI屬性說明42
4.4.2事件響應43
4.4.3文本的格式化顯示43
4.4.4文本框高度根據文字高度自適應增長44
4.5文本搜索框44
4.6文本標籤46
4.6.1 UI屬性說明46
4.6.2用代碼創建文本標籤46
4.7按鈕48
4.7.1 UI屬性說明48
4.7.2事件響應48
4.7.3連接事件49
4.7.4用代碼創建按鈕49
4.7.5圖片按鈕的創建49
4.8複選框50
4.8.1 UI屬性說明51
4.8.2事件響應51
4.9單選按鈕51
4.9.1 UI屬性說明51
4.9.2事件響應52
4.10分段選擇控件52
4.10.1 UI屬性說明53
4.10.2事件響應53
4.10.3分段大小的控制53
4.10.4分段樣式風格的控制53
4.11組合框54
4.11.1 UI屬性說明54
4.11.2事件響應55
4.11.3動態增加列表內容55
4.11.4使用數據源和代理55
4.12彈出式按鈕56
4.12.1 UI屬性說明56
4.12.2動態列表項配置56
4.12.3事件響應57
4.13滑桿57
4.13.1屬性設置57
4.13.2水平和垂直方向設置57
4.13.3事件綁定58
4.14日期選擇器58
4.14.1 UI屬性說明58
4.14.2獲取日期59
4.14.3日期變化的事件59
4.15步進器59
4.15.1 UI屬性說明60
4.15 .2事件響應60
4.15.3文本框數據與步進器保持同步60
4.16進度指示器60
4.16.1 UI屬性說明61
4.16.2啟動指示器動畫61
4.16.3更新指示器進度61
4.16.4停止指示器動畫61
4.16.5用代碼創建進度指示器62
4.17圖像視圖62
4.17.1 UI屬性說明62
4.17.2圓角處理62
4.18分組框63
4.18.1 UI屬性說明63
4.18.2用代碼創建分組框63
4.19分欄視圖64
4.19.1重要屬性和方法說明64
4.19.2用代碼創建分欄視圖65
4.19.3自定義分欄視圖樣式風格65
4.19.4分欄視圖中的子視圖控制66
4.19.5分欄視圖子視圖的隱藏和顯示68
4.20集合視圖68
4.20.1集合視圖的content 69
4.20.2 NSCollectionViewItem 69
4.20.3綁定模型到視圖70
4.20.4使用數據源方式管理集合視圖71
4.20.5實現集合視圖的高亮選擇73
4.20.6集合視圖的背景設置75
4.20.7集合視圖的佈局管理器75
4.20.8設置集合視圖的頂部頭和底部尾77
4.20.9用代碼創建集合視圖79
4.21選項卡視圖79
4.21 .1 UI屬性說明80
4.21.2代理協議NSTabViewDelegate 80
4.21.3動態增加選項卡80
4.21.4用無邊風格的選項卡進行切換控制81
4.22彈出式氣泡82
4.22.1重要屬性82
4.22.2使用示例83
第5章面板和警告框84
5.1面板84
5.1.1 UI屬性說明85
5.1.2顯示面板85
5.1.3隱藏面板86
5.1.4文件打開面板86
5.1.5文件保存面板88
5.1.6顏色選擇面板88
5.1.7字體選擇面板89
5.2警告框89
5.2.1 UI屬性說明89
5.2.2添加按鈕90
5.2.3使用示例90
5.3使用獨立的xib文件創建面板類91
第6章工具欄和菜單94
6.1工具欄94
6.1.1創建工具欄94
6.1.2 UI屬性說明95
6.1.3 NSToolbarItem的屬性說明96
6.1.4事件響應96
6.1.5創建非標準的工具欄項97
6.1.6驗證工具欄項97
6.1.7用代碼創建工具欄98
6.1.8工具欄與窗口控制按鈕融合顯示99
6.2菜單99
6.2.1 UI屬性說明100
6.2.2增加菜單101
6.2.3彈出式菜單101
6.2.4設置上下文菜單102
6.2.5 Dock菜單102
6.2.6用代碼創建菜單103
6.2.7獲取應用默認的菜單104
6.2.8菜單有效性驗證104
6.3狀態條105
6.3.1 NSStatusBar類的對象關係105
6.3.2 NSStatusBar的使用方式105
6.3.3狀態條增加彈出視圖107
第7章表視圖109
7.1表視圖109
7.1.1使用xib創建表格109
7.1.2表格樣式設置112
7.1.3表格數據顯示配置112
7.1.4表格事件119
7.1.5創建表格上下文菜單120
7.1.6數據排序120
7.1.7數據拖放121
7.1.8表格數據獲取121
7.1.9編輯表格內容121
7.1.10動態增加/刪除表格行122
7.1.11用代碼創建表格123
7.1.12代碼控制選中行125
7.1.13表格行選中顏色定制126
7.2大綱視圖控件126
7.2.1節點模型定義127
7.2.2初始化模型數據128
7.2.3實現數據源協議128
7.2.4實現代理方法,綁定數據到節點視圖129
7.2.5節點選擇的變化事件通知129
7.2.6動態增加節點130
7.2.7動態刪除節點130
7.2.8代碼控制行的展開和選中131
7.2.9修改節點展開關閉的默認圖標132
7.2.10鼠標右鍵上下文菜單133
第8章自動佈局134
8.1自動佈局的原理134
8.1.1傳統的佈局134
8.1.2自動佈局135
8.2棧視圖137
8.3 Xcode中的自動佈局設置138
8.3.1 Stack 139
8.3.2 Align 140
8.3.3 Pin 140
8.3.4 Resolve 141
8.4自動佈局的多種解決方案141
8.4.1一個問題的多種解決方案142
8.4.2約束選擇的原則和建議144
8.5自動佈局使用示例144
8.5.1兩個視圖大小相同144
8.5.2 3個View大小相同145
8.5.3文本標籤和輸入框145
8.5.4文本標籤動態字體和輸入框146
8.5.5多行文本標籤和輸入框146
8.5.6多行文本標籤動態字體和輸入框147
8.5.7兩個視圖大小相同、水平方向的間距相同148
8.5.8簡單的Stack View 149
8.5.9複雜界面未使用棧視圖150
8.5.10複雜界面使用多個嵌套棧視圖151
8.6滾動條視圖使用自動佈局151
8.7通過代碼設置自動佈局約束153
8.7.1使用NSLayoutConstraint類153
8.7.2使用NSLayoutAnchor 155
8.7.3使用VFL定義約束關係155
8.7.4使用第三方庫AutoLayoutX 155
第9章窗口控制器157
9.1 xib中窗口的加載創建過程157
9.2手工創建窗口需要注意的問題160
9.3窗口控制器和窗口的關係161
9.4將AppDelegate中窗口的管理功能分離161
9.5窗口切換後對象失去焦點問題163
第10章視圖控制器164
10.1視圖控制器164
10.1.1視圖生命週期過程165
10.1.2創建視圖控制器的3種方式166
10.1.3 representedObject屬性167
10.1.4子視圖控制器管理168
10.1.5兩個視圖控制器之間的切換方法169
10.1.6 Storyboard中的視圖控制172
10.1.7視圖中手勢識別174
10.2選項卡控制器175
10.2.1使用NSTabView創建選項卡視圖175
10.2.2使用NSTabViewController管理選項卡視圖176
10.2.3使用Storyboard方式創建176
10.2.4選項卡選中事件177
10.3分欄視圖控制器178
10.3.1控制器的幾個重要的屬性和方法178
10.3.2 NSSplitViewItem 179
10.3.3 NSSplitView 179
10.3.4使用Storyboard創建分欄視圖控制器179
10.3.5用代碼創建分欄視圖控制器180
10.3.6可折疊的視圖控制181
10.4視圖控制器與窗口控制器的關係183
10.4.1視圖與窗口183
10.4. 2視圖控制器與窗口控制器183
10.4.3不依賴xib和storyboard,純代碼實現應用184
10.5使用窗口控制器和視圖控制器實現簡單登錄流程186
10.5.1登錄流程的基本工程實現186
10.5.2代碼控制啟動的控制器190
10.5.3登錄頁面使用效果美化190
10.5.4登錄頁面純代碼實現192
10.5.5整個工程純代碼實現195
10.6滾動條視圖gao級用法195
10.6.1滾動條視圖顯示多個按鈕195
10.6.2滾動條視圖處理分頁滑動199
第11章鼠標和鍵盤事件206
11.1事件的分發過程206
11.2事件中的兩個核心類207
11.2.1 NSResponder 207
11.2.2 NSEvent 207
11.3鼠標事件208
11.3.1鼠標點擊208
11.3.2鼠標拖放209
11.3.3鼠標區域跟踪210
11.3.4模擬鼠標點擊選中212
11.4鍵盤事件213
11.4.1快捷鍵213
11.4.2控制鍵214
11.5按鍵綁定事件215
11.5.1系統綁定的按鍵事件215
11.5.2文字輸入216
11.6事件監控218
11.7動作消息218
11.8在視圖控制器中處理事件219
第12章撤銷/重做操作220
12.1撤銷/重做流程分析220
12.2實現原理222
12.3撤銷/重做動作的管理223
12.3.1 NSUndoManager的創建223
12.3.2註冊撤銷動作223
12.3.3清除撤銷動作224
12.3.4禁止註冊撤銷動作224
12.3.5撤銷動作命名224
12.3.6撤銷組224
12.4撤銷棧的深度224
12.5撤銷/重做通知消息225
12.6撤銷/重做編程示例225
第13章拖放操作227
13.1拖放開始227
13.1.1拖放數據定義227
13.1.2拖放的可視化圖像設置229
13.1.3拖放源事件229
13.1.4拖放源協議NSDraggingSource 230
13.2拖放接收231
13.2.1註冊接收的拖放類型231
13.2.2拖放目標方協議231
13.2.3拖放接收方處理過程231
13.3拖放端到端編程232
13.3.1拖放源類DragSourceView 232
13.3.2拖放目標類233
13.3.3視圖控制器中拖放源初始化235
13.4常見的拖放示例236
13.4.1文件拖放處理236
13.4 .2表格視圖的拖放處理237
13.4.3大綱視圖的數據拖放處理239
第14章Cocoa數據綁定243
14.1 KVC 243
14.1.1 KVC屬性讀寫接口244
14.1.2 KVC路徑訪問相關接口244
14.1 .3批量屬性訪問接口244
14.2 KVO 245
14.2.1 KVO相關接口245
14.2.2手工管理KVO 246
14.2.3 KVO的簡單例子247
14.3 KVB 248
14.3.1傳統的數據更新流程249
14.3.2使用綁定技術簡化更新流程249
14.3.3實現綁定依賴的關鍵點252
14.3 .4 KVB綁定的處理流程253
14.3.5使用NSArrayController管理數據254
14.3.6使用NSTreeController管理數據256
第15章藍牙框架261
15.1藍牙數據交換流程261
15.2藍牙框架中的相關類262
15.2.1外圍設備相關263
15.2.2數據中心相關263
15.2.3服務相關263
15.2.4特徵值相關263
15.3外圍設備的工作流程263
15.3.1系統初始化上電263
15.3.2創建服務264
15.3.3創建特徵值264
15.3.4服務與特徵值關聯264
15.3.5發布服務264
15.3.6廣播服務265
15.3.7數據讀寫請求265
15.3.8訂閱請求處理266
15.4數據中心工作流程266
15.4.1系統初始化上電266
15.4.2搜索外圍設備267
15.4.3建立連接267
15.4.4查詢服務267
15.4.5查詢服務特徵值267
15.4.6服務特徵讀請求268
15.4.7服務特徵值寫268
15.4.8服務訂閱269
第16章Bonjour協議270
16.1 Bonjour服務命名規則271
16.2 Bonjour協議API棧271
16.3 Bonjour核心流程271
16.3.1服務發布272
16.3.2服務發現272
16.3.3地址解析273
16.4 Bonjour編程273
16.4.1服務發布273
16.4.2服務發現274
16.4.3直接使用Bonjour進行數據發送274
16.4.4需要注意的問題275
第17章系統服務276
17.1服務處理流程277
17.2服務定義277
17.3服務提供方編程279
17.3.1實現服務功能接口279
17.3.2聲明服務280
17.3.3註冊服務281
17.3.4測試服務功能281
17.4服務使用方編程282
17.4.1註冊數據類型282
17.4.2菜單有效性校驗282
17.4.3發送數據到剪貼板283
17.4.4從剪貼板讀取結果數據283
第18章XPC服務284
18.1 XPC架構284
18.2 XPC編程實現285
18.2.1 XPC服務接口對象285
18.2.2 XPC服務方編程285
18.2.3 XPC服務請求方編程287
18.2.4 XPC服務接口反向調用288
第19章消息推送290
19.1本地消息通知290
19.1.1註冊本地消息通知290
19.1.2實現本地消息代理協議方法291
19.1.3取消本地通知291
19.1.4程序控制發送消息通知292
19.2遠程消息通知292
19.2.1推送消息的處理流程292
19.2.2請求消息推送註冊293
19.2.3設備293
19.2.4推送消息接收293
19.2.5提供者消息發送294
19.2.6消息格式294
19.2.7 Feedback服務295
19.2.8消息推送環境的證書配置295
19.2.9推送消息的發送296
第20章多文檔應用298
20.1文檔應用中的關鍵對象298
20.1.1文檔控制器298
20.1.2文檔模型299
20.1.3文檔窗口控制器299
20.2創建基於文檔的工程299
20.2.1 Document Types 300
20.2 .2 Exported UTIs 301
20.2.3文檔編程模板工程301
20.3 wrapper方式讀取文件303
20.3.1創建NSFileWrapper管理文件304
20.3.2從NSFileWrapper實例讀取內容304
20.3.3支持NSFileWrapper文件的工程配置305
20.3. 4完整的FileWrapper工程示例305
20.4文檔處理流程309
20.4.1新建文檔流程309
20.4.2打開文檔流程309
20.4.3保存文檔流程310
20.4.4導出文件流程310
20.5文檔應用開發步驟310
20.6文檔應用中的撤銷/重做支持311
20.7文檔應用管理個人檔案312
20.7.1個人檔案數據模型312
20.7.2文檔數據以普通文件方式存儲313
20.7.3文檔數據以wrapper方式存儲316
第21章iCloud同步320
21.1容器320
21.2 iCloud數據存儲321
21.2.1 iCloud文檔數據處理流程321
21.2.2 iCloud文檔本地目錄323
21.3鍵值存儲324
21.3.1鍵值存儲接口324
21.3.2鍵值存儲限制324
21.3.3鍵值存儲數據變化通知325
21.3.4鍵值存儲處理流程325
21.4 iCloud開發前準備工作325
21.5容器數據在多個App間共享327
21.5.1鍵值存儲數據的App間共享訪問327
21.5.2文檔數據的App間共享訪問328
21.6數據衝突328
21.6.1鍵值數據衝突328
21.6.2文檔類型數據衝突328
第22章CloudKit 329
22.1使用Dashboard後台管理數據330
22.2容器共享332
22.3創建記錄結構333
22.4 CloudKit數據操作334
22.4.1保存數據334
22.4.2刪除數據336
22.4.3查詢數據336
22.4.4數據關聯reference 337
22.4.5批量查詢數據操作337
22.5訂閱數據變化通知338
22.5.1創建訂閱338
22.5.2註冊消息推送338
22.6生產環境部署339
第23章Core Data 340
23.1 Core Data對象棧341
23.2在項目中使用Core Data 341
23.2.1數據增加345
23.2.2數據刪除346
23.2.3數據修改346
23.2.4數據查詢346
23.3模型間關係347
23.3.1一對一347
23.3.2一對多348
23.3.3多對多348
23.4使用Bindings綁定管理對象350
23.5撤銷/重做操作的支持353
23.6版本升級遷移354
23.6.1輕量級遷移354
23.6.2基於模型映射的遷移357
第24章HTTP網絡編程360
24.1簡單的數據請求361
24.1.1使用系統默認方式創建URLSession 361
24.1.2使用自定義的代理方法創建URLSession 362
24.1.3創建URLSession使用POST方式傳遞數據363
24.2文件下載364
24.2.1創建下載任務364
24.2.2實現下載代理協議364
24.3文件上傳365
24.3.1流式文件上傳客戶端代碼編寫365
24.3.2表單文件上傳客戶端代碼編寫366
24.4緩存368
24.5 Cookie管理369
24.5.1 Cookie編程370
24.5. 2 Cookie的一些使用場景370
24.6斷點續傳371
24.7基於URLSessionDataTask封裝的網絡處理工具類372
24.7.1網絡處理工具類實現分析372
24.7.2 HTTPClient工具類實現373
第25章多線程377
25.1 GCD 377
25.1.1分發隊列377
25.1.2 GCD多線程編程378
25.1.3 GCD實際使用的例子382
25.2 OperationQueue 384
25.2.1 BlockOperation 384
25.2.2 Operation 385
25.2.3設置任務間的依賴386
25.2.4設置Operation執行完的回調387
25.2.5取消任務387
25.2.6暫停或恢復隊列的執行387
25.2.7任務執行的優先級387
25.3 Thread 388
25.3.1線程創建方式388
25.3.2 Thread類中的關鍵方法和屬性389
25.3.3線程中的共享資源保護390
第26章事件循環393
26.1 RunLoop的模式393
26.2 RunLoop類394
26.3 RunLoop的活動狀態395
26.4定時器396
26.5 RunLoop中的輸入源397
26.6 RunLoop事件處理流程398
26.7 RunLoop使用場景398
第27章繪圖技術399
27.1繪圖上下文399
27.2坐標系統399
27.2.1笛卡兒坐標399
27.2.2屏幕坐標與本地坐標400
27.2.3坐標變換400
27.3顏色與透明度403
27.3.1顏色模型和顏色空間403
27.3.2創建顏色403
27.3.3在繪圖上下文中使用顏色404
27.3.4從系統顏色面板獲取顏色的方式404
27.4繪圖狀態405
27.5圖像406
27.5.1圖像內部緩存406
27.5.2圖像大小406
27.5.3圖像的坐標系統406
27.5.4圖像繪製方法407
27.5.5圖像創建或加載407
27.5.6屏幕圖像的捕獲408
27.5.7圖像的格式轉換409
27.6陰影和漸變409
27.6.1陰影409
27.6.2漸變410
27.7文本繪製413
27.7.1文本屬性參數413
27.7.2 String的繪製方法413
27.8使用路徑繪圖414
27.8.1路徑的樣式415
27.8.2點418
27.8.3線418
27.8.4多邊形418
27.8.5矩形418
27.8.6圓角矩形419
27.8.7圓和橢圓419
27.8.8弧形419
27.8.9貝塞爾曲線420
27.9繪圖的性能優化420
第28章核心動畫422
28.1動畫的產生過程422
28.2層423
28.2.1視圖和層423
28.2.2層的坐標系統424
28.2.3層的時間系統425
28.2.4層的對象樹425
28.2.5層級管理方法426
28.2.6層的內容426
28.2.7層的深度427
28.2.8層的透視投影427
28.3層動畫428
28.3.1隱式動畫428
28.3.2顯式動畫429
28.4核心動畫對象430
28.4.1動畫相關類431
28.4.2協議433
28.4.3輔助類435
28.4 .4事務436
28.5動畫的控制437
28.5.1隱式動畫的產生過程437
28.5.2隱式動畫的動作定義438
28.5.3動畫結束通知438
28.5.4動畫的暫停和恢復439
28.6 macOS中的屬性動畫439
28.6.1屬性動畫440
28.6.2動畫上下文對象440
28.6.3自動佈局動畫441
28.7系統動畫與核心動畫的對比441
28.8動畫編程示例442
28.8.1關鍵幀動畫442
28.8.2分組動畫444
28.8 .3轉場動畫444
28.9動畫性能445
28.10系統專有層446
28.10.1漸變層446
28.10.2形狀層447
28.10.3文本層448
28.10.4分片層448
28.10.5副本層449
28.10.6發射層450
28.10.7變換層452
第29章多代理455
29.1多代理與代理和通知的比較455
29.1.1代理方式實現455
29.1.2通知456
29.1.3多代理456
29.2多代理的實現457
29.2.1 Objective-C中多代理實現技術457
29.2.2使用消息轉發機制進行優化457
29.2.3 XMPPFramework 458
29.3聊天列表示例459
29.3.1主要的視圖控制器459
29.3 .2聯繫人模型類460
29.3.3多代理管理類460
29.3.4多代理的註冊461
29.3.5多代理的通知462
第30章數據轉換464
30.1轉換器基類465
30.2系統實現的轉換器465
30.3綁定中使用的轉換器466
30.3.1類型轉換器的實現和註冊466
30.3.2實現模型類467
30.3.3綁定Combo Box控件到模型類468
30.4實現自定義轉換器的步驟469
30.5使用轉換器分離數據轉換邏輯469
第31章框架471
31.1框架與靜態庫471
31.2創建框架工程471
31.2.1接口定義471
31.2.2頭文件引用聲明472
31.2.3使用框架473
31.2.4框架的加載路徑476
31.2.5框架的簽名問題478
第32章應用沙盒化479
32.1 macOS沙盒機制479
32.2應用沙盒配置信息479
32.3文件沙盒編程481
32.3.1設計界面481
32.3.2 App啟動處理481
32.3.3打開文件處理流程482
32.3.4保存文件483
32.3.5應用沙盒配置483
32.3.6作用域安全的書籤484
32.3.7保存打開的文件URL的書籤484
32.3.8應用啟動時通過URL的書籤獲取文件shou權484
第33章數據導航視圖487
33.1 DataNavigationItem的設計487
33.1.1 DataNavigationItem基類488
33.1.2 DataNavigationButtonItem 488
33.1.3 DataNavigationTextItem 488
33.1.4 DataNavigationFlexibleItem 489
33.2 DataNavigationView接口和屬性489
33.2.1接口489
33.2.2內部屬性489
33.3 DataNavigationView代碼實現490
33.3.1 item配置490
33.3.2創建視圖491
33.3.3自動佈局492
33.3.4更新文本視圖的方法494
33.4使用DataNavigationView 494
第34章表格數據管理控制器497
34.1表格列的動態配置497
34.1.1表列定義的模型498
34.1.2 NSTableColumn類的擴展499
34.1.3 NSTableView類的擴展499
34.1 .4代碼動態配置表列的表數據導航控制器500
34.2實現用代碼創建的表格和用xib創建表格的兼容504
34.3表格的數據代理505
34.3.1數據集管理操作接口505
34.3.2數據源實現507
34.3.3動態創建表格內容的數據代理方法507
34.3.4表內容的編輯處理511
34.3.5 TableDataDelegate的使用512
34.4數據列排序513
34.5數據行拖放交換順序514
34.6數據分頁顯示控制515
34.6.1分頁控制器515
34.6.2分頁導航視圖517
34.6.3分頁數據獲取519
34.7表格數據的增刪編輯操作519
34.7.1增加數據519
34.7 .2刪除數據520
34.7.3編輯表數據521
第35章自動化小工具522
35.1圖片資源適配自動化工具522
35.1.1實現思路522
35.1.2工程實現524
35.2國際化527
35.2.1 App語言國際化的過程527
35.2.2自動化的思路530
35.2.3 Xcode工程文件的編輯和修改531
第36章iPhone利用藍牙控制Mac 534
36.1控制的主要流程分析534
36.2 macOS服務器端535
36.2.1 XXXPeripheralService服務類535
36.2 .2 macOS端界面開發537
36.2.3 Mac鎖屏狀態通知538
36.2.4控制Mac電腦的系統命令和腳本539
36.2.5 macOS端接收iOS端的命令處理540
36.3 iOS控制端541
36.3.1 XXXCentralClient類541
36.3.2 iOS界面開發543
第37章SQLite數據庫編程546
37.1 FMDB介紹546
37.2數據庫操作接口封裝548
37.2.1數據庫管理對象548
37.2.2數據訪問對象549
37.2.3 MDAO對象551
37.2.4數據模型對象552
37.2.5具體使用553
37.3數據庫加密554
37.3.1獲取支持加密的SQLite3版本554
37.3.2加密數據庫555
37.3.3操作加密數據庫556
37.4獲取SQLite元數據556
37.5模板引擎559
37.5.1 Xcode中的模板560
37.5.2模板引擎處理流程560
37.6表模型自動化代碼生成561
37.6.1模板文件定義561
37.6.2代碼實現562
第38章開發一個完整的macOS應用564
38.1制定目標564
38.2開發自己的應用564
38.3主界面設計564
38.3.1主窗口控制器565
38.3.2分欄頁面控制器566
38.3.3左邊導航列表頁的設計與實現567
38.3.4分欄右部界面570
38.3.5詳細界面設計571
38.4工具欄設計572
38.5菜單設計574
38.5.1系統菜單574
38.5.2上下文菜單575
38.6應用偏好設置577
38.7頁面控制器的核心流程578
38.8用戶體驗的一點改進582
38.9發布應用準備583
38.9.1發佈到非應用商店渠道583
38.9.2發佈到應用商店584
後記586