iOS面試題5

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之后的操作

iOS 面試題1

iOS 面試題2

iOS 面試題3

iOS 面試題4

iOS 面試題6

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容