1.遠程推送原理是什么???
由App向iOS設(shè)備發(fā)送一個注冊通知?
iOS向APNs遠程推送服務(wù)器發(fā)送App的Bundle Id和設(shè)備的UDID?
APNs根據(jù)設(shè)備的UDID和App的Bundle Id生成deviceToken再發(fā)回給App?
App再將deviceToken發(fā)送給遠程推送服務(wù)器(商家自己的服務(wù)器), 由服務(wù)器保存在數(shù)據(jù)庫中?
當商家想發(fā)送推送時, 在遠程推送服務(wù)器中輸入要發(fā)送的消息并選擇發(fā)給哪些用戶的deviceToken,由遠程推送服務(wù)器發(fā)送給APNs?
APNs根據(jù)deviceToken發(fā)送給對應(yīng)的用戶?
2. http和scoket通信的區(qū)別???
socket連接相關(guān)庫,TCP,UDP的連接方法,HTTP的幾種常用方式??
http和scoket通信的區(qū)別: http是客戶端用http協(xié)議進行請求,發(fā)送請求時候需要封裝http請求頭,并綁定請求的數(shù)據(jù),服務(wù)器一般有web服務(wù)器配 合(當然也非絕對)。 http請求方式為客戶端主動發(fā)起請求,服務(wù)器才能給響應(yīng),一次請求完畢后則斷開連接,以節(jié)省資 源。服務(wù)器不能主動給客戶端響應(yīng)(除非采取http長連接技術(shù))。iphone主要使用類是NSUrlConnection。?
scoket是客戶端跟服務(wù)器直接使用socket“套接字”進行連接,并沒有規(guī)定連接后斷開,所以客戶端和服務(wù)器可以保持連 接通道,雙方都可以主動發(fā)送數(shù)據(jù)。一般在游戲開發(fā)或股票開發(fā)這種要求即時性很強并且保持發(fā)送數(shù)據(jù)量比較大的場合使 用。主要使用類是CFSocketRef。?
UDP:是用戶數(shù)據(jù)報協(xié)議:主要用在實時性要求高以及對質(zhì)量相對較弱的地方,但面對現(xiàn)在高質(zhì)量的線路不是容易丟包除非 是一些擁塞條件下 ,如流媒體??
TCP:是傳輸控制協(xié)議:是面連接的,那么運行環(huán)境必然要求其可靠性不可丟包有良好的擁塞控制機制如http ftp telnet 等??
http的常用方式:get,post??
3. #import、#include和@class有什么區(qū)別??
@class一般用于頭文件中需要聲明該類的某個實例變量的時候用到,它只是聲明了一個類名,關(guān)于這個類的內(nèi)部實現(xiàn)都沒 有告訴編譯器,在m文件中還是需要使用#import。??
而#import比起#include的好處就是不會引起交叉編譯。??
4. 舉出5個以上你所熟悉的ios sdk庫有哪些和第三方庫有哪些??
ios-sdk:Foundation.framework,CoreGraphics.framework,UIKit.framework, MediaPlayer.framework, CoreAudio.framework?
第三方庫: 1.json編碼解碼;2.ASIHTTPRequest等相關(guān)協(xié)議封裝;3.EGORefreshTableHeaderView下拉刷新代 碼;4.AsyncImageView 異步加載圖片并緩存;5.SDWebImage——簡化網(wǎng)絡(luò)圖片處理??
5. ViewController的 loadView, viewDidLoad,viewWillAppear,viewDidUnload,dealloc、init分別是在什么時 候調(diào)用的?在自定義ViewController的時候這幾個函數(shù)里面應(yīng)該做什么工作???
1、viewDidLoad 此方法只有當view從nib文件初始化的時候才被調(diào)用?
2、viewDidUnload當系統(tǒng)內(nèi)存吃緊的時候會調(diào)用該方法,在該方法中將所有IBOutlet(無論是property還是實例變量) 置 為nil(系統(tǒng)release view時已經(jīng)將其release掉了)在該方法中釋放其他與view有關(guān)的對象、其他在運行時創(chuàng)建(但 非系統(tǒng)必須)的對象、在viewDidLoad中 被創(chuàng)建的對象、緩存數(shù)據(jù)等 release對象后,將對象置為nil(IBOutlet只需要 將其置為nil,系統(tǒng)release view時已經(jīng)將其release掉了) dealloc方法,viewDidUnload和dealloc方法沒有關(guān)聯(lián),dealloc還是繼續(xù)做它該做的事情流程應(yīng)該是這樣:(loadView/nib文件)來加載view到內(nèi)存 -->viewDidLoad函數(shù)進一步初始化這些view -->內(nèi)存不足時,調(diào)用 viewDidUnload函數(shù)釋放views -->當需要使用view時有回到第一步如此循環(huán)??
4、viewWillAppear方法,視圖即將過渡到屏幕上時調(diào)用,(一般在返回需要刷新頁面時,我都選擇使用代理,所以很少用到)?
5、viewWillDisappear方法,這個A->B之后,A在B之后的操作