Summary 前言 Selector Objective-C Class/Object 到底是什麼? Selector 有什麼用途? 呼叫 performSelector: 需要注意的地方 Selector 是 Objective-C 中所有魔法的開始 相關閱讀 練習:小計算機 Category 什麼時候應該要使用 Category 實作 Category Category 還可以有什麼用途? Extensions Category 是否可以增加新的成員變數或屬性? 對 NSURLSessionTask 撰寫 Category 相關閱讀 練習:字串反轉 記憶體管理 Part 1 - Retain、Release Reference Count/Retain/Release Auto-release 基本原則 Getter/Setter 與 Property 語法 相關閱讀 記憶體管理 Part 2 - ARC 記憶體管理 Part 3 - Memory Warnings Delegate 與 Protocol 從其他平台來看 Objective-C 的 Delegate 設計 Protocol 與實作 Delegate 的方式 注意事項 Data Source 與 Delegate 的差別? Formal Protocol 與 Informal Protocol 無所不在的 Delegate 其他平台上所謂的 Delegate 我們曾經犯過的低級錯誤 相關閱讀 練習:貪食蛇 單元測試 AAA 原則 執行測試 測試驅動開發(TDD) 覆蓋率 相關閱讀 Blocks Block 的語法 Block 如何代替了 Delegate Block 與 Delegate 都可以想成是 Event Handler 什麼時候該用 Blocks?什麼時候該用 Delegate? __block 與 __weak 關鍵字 Block 作為 Objective-C 物件 哪些事情不要拿 Block 來做 Callback Hell 相關閱讀 練習:將 Web Service API 包裝成 SDK 練習:將 Web Service API 包裝成 SDK Part2 Notification Center 接收與發送 Notification Notification Queue Mac 上的其他 Notification Center CFNotificationCenter 相關閱讀 練習:填字遊戲 練習:自行實作 NSNotificationCenter 所謂的設計模式 圖解設計模式 為什麼要使用設計模式 再談 Singleton 練習:探索 Cocoa/Cocoa Touch Framework 練習:閱讀程式碼 一些新手常常搞混的東西 bool 與 BOOL NSInteger 與 NSUInteger NULL、nil、Nil… Responder Run Loop Application Window View View Controller UITouch 相關閱讀 Threading performSelector: GCD NSOperation 與 NSOperationQueue 相關閱讀 練習:一個發送多個連線的 Operation NSCoding 實作 NSCoding 常見用途 相關閱讀 Crash Reports 如何收集 Crash Reports 記憶體不足時產生的 Crash Report Crash Reports 的三部分 解開記憶體位置 常見 Crash 的類型 禪與 App 維修的藝術 實戰:Bad Access 實戰:因為 Category 造成的 Crash Crash Report 實戰:JB 造成的 Exception Crash Report 實戰:背景作業執行太久 Crash Report 相關閱讀 練習:閱讀 Crash Reports Core Animation CALayer CATransaction CAAnimation CAAnimation 的細部設定 CADisplayLink 在 Mac 上使用 Core Animation 教學影片 練習:KKBOX 動態歌詞 練習:Flappy Bird 練習:自由發揮 Audio API 基礎知識 iOS 與 Mac OS X 的 Audio API 概觀 使用 Audio Queue 開發播放軟體 使用 Audio Unit Processing Graph 開發播放軟體 在 AUGraph 中串接 AudioUnit 修改 LPCM 資料 Core Audio 到底難在哪? 使用 AVAudioEngine 開發播放軟體 從 Audio Unit Processing Graph 到 AVAudioEngine Audio Session 打造 Player 的完整功能 CarPlay MFI 助聽器 教學影片 相關閱讀 練習:iOS Audio Player 開發 Auto Layout 什麼是約束 (NSConstraint) 固有內容尺寸 (Intrinsic Content Size) UIScrollView 與 Auto Layout .xib 在 UIViewController lifecycle 的陷阱 Self-sizing UITableViewCell height Animation with Auto Layout Accessibility 如何使用 VoiceOver 基本支援 VoiceOver 的方向 進階的 Accessibility 設定 相關閱讀 練習:KKBOX 動態歌詞 Mac 上的 WebKit 用 Objective-C 操作 DOM JavaScript 與 Objective-C 的溝通 JavaScriptCore 小結 其他閱讀資料 版本記錄