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