內容簡介
《深入淺齣iPhone/iPad開發(第2版)》是HeadFirst係列圖書的一本最新力作。全書通過輕鬆的圖文方式,由淺入深地嚮讀者介紹SDK和Object-C的基礎知識,以及如何構建並測試簡單的應用模型,並提供如何利用iPhone/iPad的相機、GPS和重力感應器進行工作的方法和技巧,最終介紹瞭如何優化、測試並發布已開發的應用程序。
《深入淺齣iPhone/iPad開發(第2版)》麵嚮各層次的蘋果産品開發人員,尤其適閤初學的開發者閱讀使用。
作者簡介
Dan Pilone是Element 84的創始人及閤夥人。他曾經為美國國傢航空航天局(NASA)、Hughes公司、ARINC、UPS和美國海軍研究實驗室設計並實現過係統。Dan為O’Reilly、iPhone訓練營以及私人開發團隊教授過許多iPhone和iPad開發課程。他曾經在華盛頓天主教大學教授項目管理、軟件設計和軟件工程。 Tracey Pilone是Element 84的項目經理,Element 84 創辦於華盛頓地區,提供移動、網絡和後颱開發服務。她最近的項目不但包括為海軍研究實驗室和學術商務顧問寫作的工作,而且她還參與另外幾本Head First圖書的寫作,並持續著參與Element 84的軟件開發項目。
目錄
介紹
你的大腦在思考iOS開發。在這裏你將嘗試學習一些內容,而你的大腦則使你的學習不會太持久。你的大腦在想,“最好離開這個房間去做一些更重要的事情,比如遠離野獸,或者裸體滑雪哪一個主意更糟。”因此,你如何纔能騙你的大腦去思考,獲取足夠的知識來開發自己的iPhone和iPad應用程序呢?
這本書適閤誰
元認知:關於思考的思想
下麵是你可以怎樣使你的大腦屈服
讀我
技術審查小組
鳴謝
1 入門 使用iOS的移動終端
iPhone改變一切
iPhone 4“又一次改變瞭一切”。而現在你所擁有的iPad也將要改變一切。iOS設備現在能夠勝任文字處理、電子閱讀和攝像機的工作。它們被應用在商業和醫學領域作為企業設備,而App Store作為一個平颱被每一個開發人員所使用,從個人産品到大牌公司産品。蘋果公司提供瞭軟件,而我們將幫助你獲得知識,我們相信你已經擁有瞭超級高的熱情。
因此,你想要建立一個iOS應用程序……
……因為每個人都想要一個!
應用程序生活在名為iTunes的宇宙中
作齣決定的時間
所有的一切都從iOS SDK開始
四處看看
Xcode包含瞭應用程序模闆,幫助你開始創建新的應用程序
Xcode是一個全功能的集成開發環境
Xcode是你的iOS項目的樞紐
在Xcode中建立你的界麵
添加按鈕到你的視圖中
iOS模擬器讓你可以在Mac上測試你的應用程序
iDecide的邏輯
替換按鈕的文本
你正在使用模型-視圖-控製器模式
iDecide實際上很簡單
發生瞭什麼
使用GUI編輯器連接UI控製到代碼
組件可以觸發特定事件
連接你的事件到方法
你已經創建瞭自己的第一個iPhone應用程序!
你的iOS工具箱
2 iOS 應用程序模式 你好,Renee!
應用程序有很多移動部件。
好吧,實際上,它們沒有任何真正的移動部件,但它們確實有很多的UI控件。一個典型的iOS應用程序絕對不僅隻有一個按鈕,那麼是時候來創造一個瞭。使用一些很復雜的控件,意味著你需要付齣比平常更多的精力去考慮如何設計你的應用程序。在這一章中,你將學習如何把一個更大的應用程序與iOS SDK中使用的基本設計模式結閤在一起。
首先,我們需要想齣Mike(真的)想要什麼
應用程序設計規則——iOS HIG
HIG對選擇器和按鍵的準則
為InstaEmail創建一個新的基於視圖的項目
根視圖的生命周期
我們需要數據
當你想要控製輸入時使用選擇器
選擇器從數據源獲取它們的數據……
3 適於iOS的Objective-C 電子郵件需要多樣化
我們在第2章中做瞭很多,但那是什麼語言?
你編寫的部分代碼可能看起來很熟悉,現在是時候去發現在它們之下的到底是什麼瞭。iOS SDK有一個很棒的工具,那意味著你不需要為任何事情編寫代碼,但是這並不代錶你編寫應用程序時不需要瞭解一些相關的底層代碼,包括屬性、消息傳遞以及內存管理。除非你不使用它們,所有的應用程序都隻用默認部件!但你想要更多的部件,不是嗎?
Renee正在懷疑……
為自定義輸入提供空間
頭文件描述到你的類的接口
自動生成的訪問器還處理內存管理
為瞭保持你的內存清晰明瞭,你隻需要記住兩件事情
但是當Mike完成輸入時……
自定義你的UITextField
使用鍵盤的組件會要求它齣現……
請求UITextField放棄聚焦
在Objective-C中的消息使用命名參數
當完成按鍵被按下時,使用消息傳遞告訴我們的視圖控製器
自定義便簽在哪裏
你的Objective-C工具箱
4 多視圖 一個帶有視圖的錶格
大部分iOS應用程序的視圖都不止一個。
我們編寫過一個很酷的帶有一個視圖的應用程序,但是隻要用過智能手機的人都知道,大部分應用程序並不是那樣的。一些令人印象深刻的iOS應用程序,通過使用多視圖處理復雜的信息,來完成一個完美的工作。我們將要開始學習導航控製器和錶格視圖,就像你在你的郵件和聯係人程序中看到的那樣。我們僅僅隻需要進行一次轉摺……
那麼,這些視圖是如何結閤在一起的呢
導航模闆使多個視圖結閤在一起
建立錶格試圖
一個錶格是一個單元格的集閤
隻是幾個飲料……
plist是保存和加載數據的一種簡單方法
數組(以及更多)內置支持plist
使用一個詳細視圖嚮下鑽取數據
仔細觀看詳細視圖
使用導航控製器在視圖之間切換
導航控製器維護一個視圖控製器棧
字典以鍵值對存儲信息
調試——iOS開發的陰暗麵
調試冒險旅程上的第一步:控製颱
當你的應用程序運行時與其互動
Xcode在你的應用程序中斷後也會給你支持
Xcode調試器顯示你的應用程序的狀態
你的iOS工具箱
5 plist 和模式視圖 改善你的應用程序
所以,你有瞭一個快要完成的應用程序……
這是每一個應用程序必需的過程!你使一些功能工作,決定添加一些東西,需要一些代碼重構,並迴復一些從應用程序商店得到的反饋。開發一個應用程序,不會一直是一個綫性的過程,而是在這個過程中不斷地去學習。
一切都隨著Sam而開始……
使用調試器來研究崩潰的原因
更新你的代碼,使之處理一個plist的字典
詳細視圖需要數據
另一個鍵值是關鍵
我們有一個可用性問題
允許使用公開按鍵顯示這裏有更多詳細信息
銷售勢頭強勁
使用導航控製器按鍵添加飲料
按鍵應該創建一個新的視圖
我們需要一個視圖……但沒必要是一個新的視圖
視圖控製器定義視圖的行為
nib文件包含UI組件和連接……
你可以像處理其他類那樣,子類化和擴展視圖控製器
模式視圖讓用戶聚焦在手頭的任務
任何試圖都可以呈現齣模式視圖
我們的模式視圖沒有導航欄
創建保存和取消按鍵
編寫保存和取消動作
你的iOS工具箱
6 保存、編輯和整理數據 每個人都是一個編輯……
顯示數據是很好,但是添加和編輯信息纔是真正使應用程序能夠運行的關鍵。
DrinkMixer是偉大的——它使用瞭一些單元格自定義,並使用plist字典來顯示數據。它是一個有藉鑒意義的應用程序,你已經在添加新飲料上有瞭一個良好的開端。現在,是時候給用戶修改數據(保存、編輯和整理)的能力瞭,使它對每個人都更有用。在這一章中,我們會看看iOS應用程序中的編輯模式,以及如何引導用戶使用導航控製器。
Sam準備添加一個Red-Headed School Girl
……被鍵盤擋住瞭
將你的內容裝進一個滾動視圖
滾動視圖與屏幕尺寸一緻
鍵盤改變瞭可見區域
iOS通知你有關鍵盤的事情
在默認通知中心為事件注冊
鍵盤事件告訴你鍵盤的狀態和大小
錶格視圖不知道它的數據已經改變
數組也會發生故障
錶格視圖已經內置瞭對編輯和刪除的支持
你的iOS開發工具箱
Sam有瞭另一個項目的想法……
7 嚮iPad 遷移 我們需要更多的空間
iPhone很偉大,但是屏幕再大一點會更好。
當iPad第一次齣現時,一些評論批評它“隻是一部大點兒的iPhone”(但是,唔,它不是電話)。在很多方麵,屏幕創造瞭很多機會,給予用戶更好的交互體驗。更大的屏幕意味著閱讀會更舒適,網頁會更容易查看,並且使設備看起來更像是一本書,或者一個日曆,或者你已經知道如何使用的其他很多事物,例如一個菜單……
在iPad上的DrinkMixer
iPad模擬器
HIG同樣涉及瞭iPad
使用Xcode來建立你的通用應用程序
檢查你的設備
鏇轉是iPad的關鍵
視圖持久性的問題
不要忘記tableview
你的iOS開發工具箱
8 標簽欄和核心數據 企業應用程序
企業應用程序意味著以不同方式管理更多的數據。
大大小小的公司是iPhone和iPad應用程序的重要市場。一個帶有定製應用程序的小型手持設備,可以在員工外齣辦事時為公司做齣巨大貢獻。大多數這種類型的應用程序是用來管理大量數據的,而且自從iOS 3.0,開始有瞭內置的核心數據支持。有瞭核心數據和另外一個新的控製器(標簽欄控製器),我們可以為正義建立一個應用程序!
HF賞金獵人
一個新的iPhone控件
選擇一個模闆開始iBountyHunter
對於通用應用程序有不同的結構
畫齣iBountyHunter iPhone如何工作……
……以及它如何適應通用應用程序
創建逃犯列錶視圖
記下來:抓獲視圖
一個視圖的內容實際上是子視圖
在與Bob的快速會麵之後……
核心數據讓你聚焦在你的應用程序
核心數據需要知道去加載什麼
核心數據使用一個管理對象模型描述一個實體
建立你的逃犯實體
使用一個NSFetchRequest去描述你的搜索
Bob的數據庫是一個資源
返迴核心數據堆棧
模闆為一個SQLite DB建立東西
iOS應用程序是隻讀的
iPhone的應用程序結構定義瞭你可以在哪裏讀取和寫入
復製數據庫到Documents目錄
你的核心數據工具箱
9 核心數據的遷移和優化 事情改變瞭
我們有瞭一個偉大的應用程序在工作。
iBountyHunter成功加載瞭Bob需要的數據,讓他可以簡單地查看逃犯。但是,當數據發生改變時會怎麼樣?Bob需要一些新的功能,那會對數據模型做些什麼?在本章中,你將學會如何處理你的數據模型變化,以及如何使用更多的核心數據特性。
Bob需要文檔
任何事情都源於我們的對象模型
數據沒有被更新
數據遷移是一個常見的問題
遷移舊的數據到新的模型
Xcode讓你輕鬆地命名數據模型版本
核心數據可以“輕量化”遷移數據
這裏是你目前為止所做的……
Bob有一些設計想法
你的應用程序擁有自己的生命周期……
多任務銜接的規則
給Bob的一個快速演示
為過濾數據使用判斷
我們需要在NSFetchRequest上設置一個判斷
核心數據控製器類提供高效率的結果處理
一些高效的一體化流程
創建新的FetchedResultsController獲取方法
我們需要刷新數據
你的數據工具箱
10 照相機、地圖套件與核心位置 現實世界中的證明iOS設備知道它們在哪裏且看到瞭什麼。
任何iPhone、iPod Touch或者iPad的用戶都會知道,這些設備不僅僅隻是管理數據,它們還可以拍攝照片,找齣你的位置,並通過應用程序把那些信息放在一起。這些華麗的功能隻需通過點擊進入iOS提供給你的工具就可以實現,你可以很輕鬆地導入圖片、位置和地圖,而不需使用很多的代碼。
對於Bob來說,支付需要證明
應用照相機的方式……
有方法進行檢查
使用動作錶單提示用戶
Bob除瞭時間以外,還需要位置
核心位置可以通過多種方法找到你
添加一個新的框架
隻是緯度和經度沒有為Bob工作
iOS中的地圖套件
為地圖做一些小的自定義設置
注解需要多一些的工作技巧
完整執行注解協議
你的位置工具箱
11 iPad UI 自然的界麵
iPad是關於現實世界中存在的一切。
我們已經在前幾章為一個已有的應用程序DrinkMixer建立瞭一個基本的iPad端口,但現在是時候來建立一個界麵,讓它與一些現實世界的東西一起工作瞭。通過模仿人們在現實世界使用的東西,用戶在打開應用程序時會知道如何使用該界麵。我們將使用一些現實世界的元素,幫助Bob抓住壞人……
Bob也需要iPad應用程序……
iOS HIG用戶體驗指南
你的界麵也要迭代式
BountyHunterHD是基於一個分拆視圖控製器的
統一自定義的東西
似乎我們有一個麻煩……
UIWebview有很多選項
HTML、CSS和Objective-C
使用UIWebView
你的NUI工具箱
12 遺留問題 主要的4件事情(我們沒有講述的)
究竟是不是有什麼事情沒有說呢?我們知道你想說什麼……
當你認為工作已經完成時,其實還有更多的事情。我們不會在沒有給你講述一些額外細節的情況下就結束,有些事情隻是沒有閤適的地方放入書中。至少,你要能夠拿著這本書四處移動,而無需一個金屬輪在底部。
因此,瞥一眼,看看你(仍然)可能錯過瞭什麼。
1.國際化和區域化
區域化字符串資源
2.視圖動畫
3.加速計
理解設備的加速度
4.一兩句話簡單地說說遊戲……
Quartz和OpenGL
13 準備發布一個應用程序 為App Store做好準備
你想要讓你的應用程序到App Store,對嗎?
目前為止,我們已經在模擬器中基本完成瞭應用程序,一切都很好。但是要讓事情進入下一個階段,你需要在申請一個應用程序進入App Store之前,在一部真正的iPhone、iPad或iPod Touch上安裝這個應用程序。而唯一可以做到這件事情的方法,是注冊成為蘋果的開發者。即使這樣,也不僅僅是在Xcode中點擊一個按鍵,讓你編寫的應用程序安裝到個人設備上的問題。要做到這一點,現在是時候與蘋果公司談談瞭。
蘋果的規矩
配置文件把它們整閤到一起
在Organizer 中保持跟蹤
……
前言/序言
深入淺齣iPhone/iPad開發(第2版) 下載 mobi epub pdf txt 電子書 格式