斯坦福iOS7公開課11筆記及示範Demo&訪問HTTPS連結下載資料,斯坦福ios7
這一節主要介紹UITableView以及iPad,Demo為從Flicker下載圖片並顯示,但是實際過程中發現需要FQ並使用HTTPS串連,所以這次用了兩個Demo,一個是課程中的Demo,另一個是簡化的。
最後調試過程中還找到Xcode中觀察變數的一個小技巧。
一.UITableView
UITableView是iOS中最常用的表視圖,通訊錄中的連絡人、手機設定裡的每一個選項都是表視圖中的一個儲存格cell,、微博每一條記錄其實也是一個cell,只不過是組成要素更多一些而已。
(1)兩個重要的協議
UITableViewDataSource和UITableViewDelegate是UITableView裡兩個重要的協議(可以把協議理解成介面),前者用來實現儲存格資料來源的控制,包括兩個必須實現的:指定儲存格cell數量以及分組數量,其他諸如刪除、移動等操作也是通過實現這個協議裡的方法來使用。
UITableViewDelegate,這個協議提供使用者與UITableView互動操作的一系列方法,比如最常用的點擊儲存格的回應程式法。
(2)cell的複用
為了節約資源,iOS會對cell進行複用,單專屬一個地方存放移出螢幕的cell,當向上滑動UITableView時,如果隊列中有可複用的cell,就可以直接取出使用,需要注意的是,這裡的複用有一個限制條件,即cell的樣式都相同。
二.iPad特有控制項
iPad中有兩種常用UI控制項,快顯視窗UIPopoverController和目錄-內容群組控制項UISplitViewController,本次課程介紹了後者,UISplitViewController由兩個視圖組成,一個是目錄檢視master,一個是內容視圖detail,Demo就是通過master中使用UITableView顯示圖片名稱,點擊後在內容視圖detail裡載入對應圖片。
這裡有兩點值得注意:
(1)根據UISplitViewController為iPad專屬控制項直接判斷裝置是iPhone還是iPad,UISplitViewController預設0是master目錄檢視,1是detail內容視圖,使用UISplitViewController下,如果擷取不到內容視圖,裝置就是iPhone,反之iPad。
(2)UISplitViewController協議裡提供了方法來解決橫豎屏時master視圖是否顯示的問題 ,需要注意的是,UISplitViewControllerDelegate很特殊,需要在viewDidLoad之前設定
三.Demo過程問題總結
Flicker目前被牆,所以需要FQ訪問,註冊申請API的key即可,驗證發現只能通過HTTPS訪問,所以對FilckerFetcher裡的地址都修改成HTTPS
下載得到的資料一直為nil,報錯也是提示資料空,檢查發現,請求HTTPS串連時不能使用+dataWithContentsOfURL:這個方法,因為無法設定安全驗證相關,而請求HTTPS串連是必須對安全驗證進行設定的,否則請求失敗,所以得不到資料。
參考:http://stackoverflow.com/questions/14013307/datawithcontentsofurl-ios-https-self-signed-certificate
這裡使用了NSURLConnection的委託方法,來使用戶端忽略認證驗證
參考:http://www.cnblogs.com/stan0714/archive/2012/03/21/2409872.html
還有其它方法,沒有進行嘗試,這種方法據說是蘋果不允許的,提交應用時會有問題。
http://stackoverflow.com/questions/19394628/cant-receive-json-request-via-https-due-to-untrusted-certificate
還遇到一個問題就是擷取圖片資料時報錯,這是因為圖片接收不完全,現象圖片在螢幕上顯示一小部分立即消失,原因是之前只接受了部分資料就馬上轉化圖片,並通知主線程更新UI
實際上應該資料接收完全後再做後續操作,因為資料可能需要多次才傳輸完全。
同樣問題後來也出現在擷取圖片列表的json資料時(只是當時恰好資料一次就擷取完全過,沒注意處理)
四.調試小技巧
用滑鼠選中變數或者下方觀察變數都可以,但有時始終覺得不方便,斷點調試時可以在輸出視窗輸入“po 變數名”來觀察變數賦值情況
Demo效果:
目前完整版Demo點擊儲存格還有bug,歡迎解決後告知原因,若有更新也會及時補充。
簡化版Demo下載 完整版Demo下載
iphone進入復原模式怎恢複韌體
先上網下載ios5.1.1韌體。然後在itunes裡邊選擇shift+恢複。
可能是你還沒恢複完,資料線就鬆了。