IOS面試題目模板_第1頁
IOS面試題目模板_第2頁
IOS面試題目模板_第3頁
IOS面試題目模板_第4頁
IOS面試題目模板_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、基礎(chǔ)題目6. 關(guān)鍵字con st是什么含意?分別解釋下列語句中const的作用?const int a;int const a;const int *a;int * const a;int const * a const;(1)欲阻止一個 變量被改變,可以使用const關(guān)鍵字。在定義該 const變量時,通常需要 對它進(jìn)行初始化,因 為以后就沒有機(jī)會再去 改變它了;(2)對指針來說,可以指定指 針本身為const,也可以指定指 針?biāo)?的數(shù)據(jù)為const,或二者同 時指定為const ;(3) 在一個函數(shù)聲明中,const可以修飾形參,表明它是一個 輸入?yún)?數(shù),在函數(shù)內(nèi)部不能改變其值;(4)對

2、于類的成員函數(shù),若指定其 為const類型,則表明其是一個 常函數(shù),不能修改類的成員變量;前兩個的作用是一 樣,a是一個常整型數(shù)。第三個意味著a是一個指向常整型數(shù)的指 針(也就是,整型數(shù)是不可修改的,但指針可以)。第四個意思a是一個指向整型數(shù)的常指 針(也就是說,指針指向的整 型數(shù)是可以修改的,但指 針是不可修改的)。最后一個意味著a是一個指向常整型數(shù)的常指 針(也就是說,指針指向的整型數(shù)是不可修改 的,同時指針也是不可修改的)。如果 應(yīng)試者能正確回答 這些問題, 那么他就給我留下了一個好印象。block 與 delegate 的區(qū)別 ?delegate運(yùn)行成本低。block成本很高的。而且

3、delegate是經(jīng)典設(shè)計(jì) 模式也就是大部分的語言都可以實(shí)現(xiàn)的模式,相對block出現(xiàn)比較早。block出棧需要將使用的數(shù)據(jù)從棧內(nèi)存拷貝到堆內(nèi)存,當(dāng)然對象的話 就是加計(jì)數(shù),使用完或者block置nil后才消除。delegate只是保存了一個對象指針,直接回調(diào),沒有額外消耗。相對C的函數(shù)指針,只多做了一個查表動作1說所你了解以及日常使用的版本控制系統(tǒng),以及它們的優(yōu)缺點(diǎn)SVN優(yōu)點(diǎn):除包括了 CVS的大多數(shù)特點(diǎn)外,還有一些如:文件目錄可 以方便的改名、基于數(shù)據(jù)庫的版本庫、操作速度提升、權(quán)限管理更完 善等功能非常好用。SVN缺點(diǎn):代碼庫不是分布式,而是集中在一個地方,所以導(dǎo)致跨國 訪問的時候速度很慢,

4、遠(yuǎn)程發(fā)開非常不利。其次由于代碼庫只有一 份,特別是元數(shù)據(jù)都存在服務(wù)器上,所以當(dāng)服務(wù)器崩潰的時候損失嚴(yán) 重。GIT優(yōu)點(diǎn):是免費(fèi)、開源、它采用了分布式版本庫的方式,不必服務(wù) 器端軟件支持,使源代碼的發(fā)布和交流極其方便。每一個GIT克隆都是一個完整的文件庫,含有全部歷史記錄和修訂追蹤能力。其最大特 色就是 分支”及 合并”操作快速、簡便。支持離線工作,GIT是整個項(xiàng)目范圍的原子提交,而且GIT中的每個工作樹都包含一個具有完整項(xiàng)目歷史的倉庫。GIT缺點(diǎn):對windows以及中文的支持不是很好。1、Objective-C的類可以多重繼承么?可以采用多個協(xié) 議么?不可以多重繼承,可以采用多個協(xié)議。2、#i

5、mport 和#include 的區(qū)別是什么?# import 跟 #import有什么區(qū)別?#import能避免頭文件被重復(fù)包含的問題:1、一般來說,導(dǎo)入 objective c的頭文件時用#import,包含c/c+頭文 件時用#include。使用include要注意重復(fù)引用的問題:class A, class B都引用了 class C class D若引用 class A與 class B就會 報(bào)重復(fù)引用的錯誤。2、#import確定一個文件只能被導(dǎo)入一次,這使你在遞 歸包含中不會出現(xiàn)問題。所以,#import比起#include的好處就是它避免了重復(fù)引用的問題。 所以在0C中我們基

6、本用的都是import。# import包含iOS框架類庫里的類,#import包含項(xiàng)目里自定義 的類。3、Category是什么?擴(kuò)展一個類的方式用繼承好還是 類目好?為什么?Category是類目。用類目好,因?yàn)槔^承要滿足a is a b的關(guān)系,而類目只需要滿足a has a b的關(guān)系,局限性更小,你不用定義子類就能擴(kuò)展一個類的功能,還能將類的定義分開放在不同的源文 件里,用Category去重寫類的方法,僅對本 Category有效,不會影響 到其他類與原有類的關(guān)系。4、延展是什么?作用是什么?延展(extension):在自己類的實(shí)現(xiàn)文件中添加類目來 聲明私有方法。5、類實(shí)例(成員)變

7、量的protected ,private,public 聲明各有什么含義?protected :受保護(hù)的,該實(shí)例變量只能在該類和其子類內(nèi)訪問,其 他類內(nèi)不能訪問。private :私有的,該實(shí)例變量只能在該類內(nèi)訪問,其他類內(nèi)不能訪問。public :共有的,該實(shí)例變量誰都可以訪問。6、id聲明的對象有什么特性??沒有*號?動態(tài)數(shù)據(jù)類型?可以指向任何類的對象(設(shè)置是nil),而不關(guān)心其具體類型?在運(yùn)行時檢查其具體類型?可以對其發(fā)送任何(存在的)消息簡單概括:任意對象的指針7、 委托是什么?委托和委托方雙方的property聲明用 什么屬性?為什么?委托:一個對象保存另外一個對象的引用,被引用的對

8、象實(shí)現(xiàn)了事先 確定的協(xié)議,該協(xié)議用于將引用對象中的變化通知給被引用對象。委托和委托方雙方的 property聲明屬性都是assign而不是retain為了避免循環(huán)引用造成的內(nèi)存泄露。&淺拷貝和深拷貝區(qū)別是什么?淺層復(fù)制:只復(fù)制指向?qū)ο蟮闹羔槪粡?fù)制引用對象本身。深層復(fù)制:復(fù)制引用對象本身。9、內(nèi)存管理的幾條原則是什么?按照默認(rèn)法則,哪些 關(guān)鍵字生成的對象需要手動釋放?哪些情況下不需要手動釋放,會直接進(jìn)入自動釋 放池??當(dāng)使用new、alloc或copy方法創(chuàng)建一個對象時,該對象引用計(jì)數(shù)器為1。如 果不需要使用該對象,可以向其發(fā)送release或autorelease消息,在其使用完畢時被銷毀

9、。?如果通過其他方法獲取一個對象,則可以假設(shè)這個對象引用計(jì)數(shù)為1,并且被設(shè)置為 autorelease,不需要對該對象進(jìn)行清理,如 果確實(shí)需要retain這個對象,則需要使用完畢后release。?如果retain 了某個對象,需要 release或autorelease該對象,保持retain方法和release方法使用次數(shù)相等。使用new、alloc、copy關(guān)鍵字生成的對象和 retain 了的對象需要手動 釋放。設(shè)置為autorelease的對象不需要手動釋放,會直接進(jìn)入自動 釋放池。簡單回答:誰申請誰釋放10、單例的概念,請寫出單例,系統(tǒng)提供了我們那些單 例?Singleton (單

10、例模式),也叫 單子模式,是一種常用的 軟件設(shè) 計(jì)模式。在 應(yīng)用這個模式時,單例對象的類必須保證只有一個實(shí)例存 在。+ (instantClass *)sharedClient static instantClass *_sharedClient = nil;static dispatch_once_t onceToken;dispatch_once(&o nceToken, A_sharedClient = instantClass alloc init;);系統(tǒng)自帶的單例UlApplication NSNotificationCenterNSFileManager NSUserDefaul

11、tsNSURLCacheNSHTTPCookieStorage11、class的作用是什么?在頭文件中,一般只需要知道被引用的類的名稱就可 以了。不需要知道其內(nèi)部的實(shí)體變量和方法,所以在頭文件中一般使 用class來聲明這個名稱是類的名稱。而在實(shí)現(xiàn)類里面,因?yàn)闀玫?這個引用類的內(nèi)部的實(shí)體變量和方法,所以需要使用#import來包含這個被引用類的頭文件。?class的作用是告訴編譯器,有這么一個類,用吧,沒有問題?class還可以解決循環(huán)依賴的問題,例如A.h導(dǎo)入了 B.h,而B.h導(dǎo)入了 A.h,每一個頭文件的編譯都要讓對象先編譯成功才行?使用class就可以避免這種情況的發(fā)生12、KVC是

12、什么?KV0是什么?有什么特點(diǎn)??KVC是鍵值編碼,特點(diǎn)是通過指定表示要訪問的屬性名字的字符串標(biāo)識符,可以進(jìn)行類的屬性讀取和設(shè)置?KVO是鍵值觀察,特點(diǎn)是利用鍵值觀察可以注冊成為一個對象的觀察者,在該對象的某個屬性變化時收到通知實(shí)現(xiàn)方法:watchPersonForChangeOfAddress:實(shí)現(xiàn)觀察 observeValueForKeyPath:ofObject:change:context:在被觀察的 key path的值變化時調(diào)用。dealloc停止觀察13、MVC是什么?有什么特性?- MVC是一種設(shè)計(jì)模式,由模型、視圖、控制器3部分組成。- 模型:保存應(yīng)用程序數(shù)據(jù)的類,處理業(yè)務(wù)邏

13、輯的類- 視圖:窗口,控件和其他用戶能看到的并且能交互的元素- 控制器:將模型和試圖綁定在一起,確定如何處理用戶輸入 的類14、 定義屬性時,什么情況使用copy、assignretain ?使用assign:對基礎(chǔ)數(shù)據(jù)類型(NSInteger, CGFIoat)和C數(shù)據(jù)類型(int, float, double,char, 等等)使用copy :希望獲得源對象的副本而不改變源對象內(nèi)容時,對NSString使用retain :希望獲得源對象的所有權(quán)時,對其他NSObject和其子類1. 屬性 readwrite , readonly, assign, retain , copy, nonato

14、mic 各是 什么作用,在那種情況下用?assign 用于簡單數(shù)據(jù)類型,如NSInteger,double,bool,retain 和 copy用于對象,readwrite是可讀可寫特性;需要生成getter方法和setter方法時readonly是只讀特性只會生成getter方法不會生成setter方法;不希望屬性在類外改變assign是賦值特性,setter方法將傳入?yún)?shù)賦值給實(shí)例變量;僅設(shè)置 變量時;retain表示持有特性,setter方法將傳入?yún)?shù)先保留,再賦 值,傳入?yún)?shù)的 retaincount會+1;copy表示賦值特性,setter方法將傳入對象復(fù)制一份;需要完全一份 新的變

15、量時。nonatomic非原子操作,決定編譯器生成的settergetter是否是原子操作,atomic表示多線程安全,一般使用nonatomic2.id聲明的對象有什么特性?Id聲明的對象具有運(yùn)行時的特性,即可以指向任意類型的objcetive-c的對象;3.0bjective-C如何對內(nèi)存管理的,說說你的看法和解決方 法?Objective-C的內(nèi)存管理主要有三種方式ARC(自動內(nèi)存計(jì)數(shù))、手動內(nèi)存計(jì)數(shù)、內(nèi)存池。4.內(nèi)存管理的幾條原則時什么?誰申請,誰釋放遵循Cocoa Touch的使用原則;內(nèi)存管理主要要避免“過早釋放”和“內(nèi)存泄漏”,對于“過早釋 放”需要注意 property設(shè)置特性

16、時,一定要用對特性關(guān)鍵字,對于“內(nèi)存泄漏”,一定要申請了要負(fù)責(zé)釋放,要細(xì)心。5.那些關(guān)鍵字生成的對象需要手動釋放?關(guān)鍵字alloc或new生成的對象需要手動釋放6在和property結(jié)合的時候怎樣有效的避免內(nèi)存泄露? 設(shè)置正確的property屬性,對于retain需要在合適的地方釋放 8.0bject c的類可以多重繼承么?可以實(shí)現(xiàn)多個接口 么?Object-c的類不可以多重繼承;可以實(shí)現(xiàn)多個接口,通過實(shí)現(xiàn)多個接 口可以完成C+的多重繼承;9. Category是什么?重寫一個類的方式用繼承好還是分 類好?為什么?Category是類別,一般情況用分類好,用Category去重寫類的方法,僅

17、對本Category有效,不會影響到其他類與原有類的關(guān)系。10. 描述一下iOS SDK中如何實(shí)現(xiàn) MVC的開發(fā)模式MVC是模型、試圖、控制開發(fā)模式,對于iOS SDK所有的View都是視圖層的,它應(yīng)該獨(dú)立于模型層,由視圖控制層來控制。所有的用 戶數(shù)據(jù)都是模型層,它應(yīng)該獨(dú)立于視圖。所有的ViewController都是控制層,由它負(fù)責(zé)控制視圖,訪問模型數(shù)據(jù)11. Object C中創(chuàng)建線程的方法是什么?如果在主線程 中執(zhí)行代碼,方法是什么?如果想延時執(zhí)行代碼、方法 又是什么?線程創(chuàng)建有三種方法:使用 NSThread創(chuàng)建、使用 GCD的dispatch、 使用子類化的 NSOperation,

18、然后將其加入NSOperationQueue;在主線 程執(zhí)行代碼,方法是 performSelectorOnMainThread,如果想延時執(zhí)行 代碼可以用 performSelector:onThread:withObject:waitUntilDone3.堆和棧的區(qū)別?管理方式:對于棧來講,是由編譯器自動管理,無需我們手工控制; 對于堆來說,釋放工作由程序員控制,容易產(chǎn)生memory leak。申請大小:棧:棧是向低地址擴(kuò)展的數(shù)據(jù)結(jié)構(gòu),是一塊連續(xù)的內(nèi)存的區(qū) 域,堆:是向高地址擴(kuò)展的數(shù)據(jù)結(jié)構(gòu),是不連續(xù)的內(nèi)存區(qū)域。分配方式:堆都是動態(tài)分配的,動態(tài)分配由alloca函數(shù)進(jìn)行分配 棧的動態(tài)分配由編

19、譯器進(jìn)行釋放,無需我們手工實(shí)現(xiàn)一簡單來說:通俗的說,堆是全局變量(大概可以這么說),是由程序員釋放,堆是動態(tài)分配的;棧是局部變量,是由系統(tǒng)釋放。4.kvc和kvo的區(qū)別kvc:鍵值編碼,是一種間接訪問對象的屬性,使用字符串來標(biāo)示屬 性kvo:鍵值觀察機(jī)制,提供了觀察某一屬性變化的方法1. 線程和進(jìn)程的區(qū)別?主要不同的是操作系統(tǒng)資源管理方式 線程是一個進(jìn)程中不同的執(zhí)行路徑,線程有自己的堆、局部變量 進(jìn)程有獨(dú)立的地址空間,一個線程死掉,整個進(jìn)程就會死掉1. #import 和#include 的區(qū)別,class代表什么?class 一般用于頭文件中需要聲明該類的某個實(shí)例變量的時候用到,在m文件中還

20、是需要使用 #import而#import比起#include的好處就是 不會引起重復(fù)包含1. 類別的作用?有時我們需要在一個已經(jīng)定義好的類中增加一些方法,而不想去重寫 該類??梢允褂妙悇e對該類擴(kuò)充新的方法。注意:類別只能擴(kuò)充方法,而不能擴(kuò)充成員變量。2、委托是什么?委托的property聲明用什么屬性?為 什么?委托:一個對象保存另一個對象的引用,被引用的對象實(shí)現(xiàn)了事先確 定的協(xié)議,該協(xié)議用于將引用對象中的變化通知給被引用對象。委托和委托方雙方的 property聲明屬性都是assign而不是retain為了避免循環(huán)引用造成的內(nèi)存泄露循環(huán)引用的問題這樣理解委托機(jī)制是一種設(shè)計(jì)模式。寫一個委托的

21、in terface?protocol showNameDelegate -(void)showNameWithText;endinterface LoginClass : NSObjectproperty(nonatomic,assign)iddelegate;end簡述響應(yīng)鏈答案:事件響應(yīng)鏈。包括點(diǎn)擊事件,畫面刷新事件等。在視圖棧內(nèi)從 上至下,或者從下之上傳播。可以說點(diǎn)事件的分發(fā),傳遞以及處理。具體可以去看下touch事件這塊。因?yàn)閱柕奶橄蠡薝IViewController 的生命周期?當(dāng)一個視圖控制器被創(chuàng)建,并在屏幕上顯示的時候。代碼的執(zhí)行順序1、 alloc創(chuàng)建對象,分配空 間2、

22、init (initWithNibName) 初始化對象,初始化數(shù)據(jù)3、loadView從nib載入視圖,通常這一步不需要去干涉。除非你沒有使用xib文件創(chuàng)建視圖4、 viewDidLoad載入完成,可以進(jìn)行自定義數(shù) 據(jù)以及動態(tài)創(chuàng)建其他控件5、 viewWillAppear視圖將出現(xiàn)在屏幕之前,馬上這個 視圖就會被展現(xiàn)在屏幕上了6、 viewDidAppear視圖已在屏幕上渲染完成當(dāng)一個視圖被移除屏幕并且銷毀的時候的執(zhí)行順序,這個順2. 你通常以怎樣的數(shù)據(jù)格式跟服務(wù)端做數(shù)據(jù)交換JSON XML,Sbjson/touchjson/ 開源庫Gdata,http4. 你了解的第三方庫,常用哪些Fra

23、meworkASIHTTPRrequest TXML、TouchJSON MBProgressHUD、EGOTableViewPullRefresh FMDB、ZBarSDK MinZIP5. 你了解的設(shè)計(jì)模式Classs Method、Abstract Factory、Singleton、Observer、Prototype、MVC iOS SDK:1.如何實(shí)現(xiàn)Push通知的機(jī)制(大致寫下)1用網(wǎng)站把要發(fā)送的消息、目的iPhone的標(biāo)識打包,發(fā)給 APNS2APNS在自身的已注冊 Push服務(wù)的iPhone列表中,查找有相應(yīng)標(biāo)識的iPhone,并把消息發(fā)到iPhone。3iPhone把發(fā)來的

24、消息傳遞給相應(yīng)的應(yīng)用程序,并且按照設(shè)定彈出Push通知2. Key-Value Codi ng是什么?KVC是通過字符串標(biāo)識符間接訪問對象屬性和關(guān)系的機(jī)制。5.說說 Auto Release Pool 內(nèi)存管理模式,GC, retain countauto release pool內(nèi)存自動釋放池。放到池中的會在失效后自動釋放 內(nèi)存管理模式:可以手動申請釋放,使用auto release pool,使用ARCGC: Gabbage Collector 垃圾回收iOS有沒有GC Gabage Collector垃圾回收機(jī)制mac os x 有 ios 沒有retain count :內(nèi)存計(jì)數(shù)器8.

25、 如何實(shí)現(xiàn)滾動到底部自動加載,以及顯示一個loadi ng cell用 scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate方法計(jì)算是否觸底,調(diào)用異步刷新事 件9. 如何實(shí)現(xiàn)從外部打開程序在項(xiàng)目的Info.plist文件中 添加一個 URL types節(jié)點(diǎn)就可以了UlApplication sharedApplication openURL:NSURLURLWithString:;UIApplication sharedApplication

26、openURL:NSURLURLWithString:tel:UIApplication sharedApplication openURL:NSURLURLWithString:sms:10. 如何將圖片添加到照片庫UIImage *img = UIImage imageWithNamed: ” 120png ”;UllmageWriteToSavedPhotosAlbum (img, nil, nil, nil);11. copy 與 retain 的區(qū)別copy復(fù)制一個對象retain會讓計(jì)數(shù)器+12 Protocol與performS

27、elector:的相同與區(qū)別,哪個更好(基礎(chǔ)參數(shù)類型傳遞)Protocol是協(xié)議,同時也走了NSObject的協(xié)議 在NSObject協(xié)議中定義了很多基本的協(xié)議函數(shù),其中包括performSelector。在項(xiàng)目什么時候選擇使用GCD,什么時候選擇 NSOperation ?異步請求和同步請求的區(qū)別?串行隊(duì)列 和并行隊(duì)列的區(qū)別?項(xiàng)目中使用NSOperation的優(yōu)點(diǎn)是NSOperation是對線程的高度抽象,在項(xiàng)目 中使用它,會使項(xiàng)目的程序結(jié)構(gòu)更好,子類化 NSOperation的設(shè)計(jì)思路,是具 有面向?qū)ο蟮膬?yōu)點(diǎn)(復(fù)用、圭寸裝),使得實(shí)現(xiàn)是多線程支持,而接口簡單,建 議在復(fù)雜項(xiàng)目中使用。項(xiàng)目中

28、使用GCD的優(yōu)點(diǎn)是GCD本身非常簡單、易用,對于不復(fù)雜的多線程 操作,會節(jié)省代碼量,而Block參數(shù)的使用,會是代碼更為易讀,建議在簡單 項(xiàng)目中使用。進(jìn)程同步:一個操作沒有完成則不返回,必須一件一件的做事情,一件事情返 回了才能做下一件事情。進(jìn)程異步:多個操作交替進(jìn)行,操作的返回時機(jī)不確定。串行隊(duì)列的異步任務(wù):使用一個子線程依次執(zhí)行。并行隊(duì)列的異步任務(wù):使用多個子線程無序執(zhí)行,一般任務(wù)較少時幾個任務(wù)就 開幾個線程,較多時則開部分線程。簡單說說TCP/UDP區(qū)別?TCP-傳輸控制協(xié)議,提供的是面向連接、可靠的字節(jié)流服務(wù)。當(dāng)客 戶和服務(wù)器彼此交換數(shù)據(jù)前,必須先在雙方之間建立一個TCP連接,之后才能

29、傳輸數(shù)據(jù)。TCP提供超時重發(fā),丟棄重復(fù)數(shù)據(jù),檢驗(yàn)數(shù)據(jù), 流量控制等功能,保證數(shù)據(jù)能從一端傳到另一端。UDP-用戶數(shù)據(jù)報(bào)協(xié)議,是一個簡單的面向數(shù)據(jù)報(bào)的運(yùn)輸層協(xié)議。UDP不提供可靠性,它只是把應(yīng)用程序傳給IP層的數(shù)據(jù)報(bào)發(fā)送出去,但是并不能保證它們能到達(dá)目的地。由于UDP在傳輸數(shù)據(jù)報(bào)前不用在客戶和服務(wù)器之間建立一個連接,且沒有超時重發(fā)等機(jī)制,故而傳 輸速度很快TCP ( Transmission Control Protocol,傳輸控制協(xié)議)是基于連接的協(xié)議,也就是說,在正式收發(fā)數(shù)據(jù)前,必須和對方建立可靠的連 接。一個TCP連接必須要經(jīng)過三次對話”才能建立起來,我們來看看 這三次對話的簡單過程:1

30、主機(jī)A向主機(jī)B發(fā)出連接請求數(shù)據(jù)包;2主 機(jī)B向主機(jī)A發(fā)送同意連接和要求同步(同步就是兩臺主機(jī)一個在發(fā) 送,一個在接收,協(xié)調(diào)工作)的數(shù)據(jù)包;3.主機(jī)A再發(fā)出一個數(shù)據(jù)包確認(rèn)主機(jī)B的要求同步:我現(xiàn)在就發(fā),你接著吧!”,這是第三次對話。三次 對話”的目的是使數(shù)據(jù)包的發(fā)送和接收同步,經(jīng)過三次對話”之后,主機(jī)A才向主機(jī)B正式發(fā)送數(shù)據(jù)。UDP( User Data Protocol ,用戶數(shù)據(jù)報(bào)協(xié)議)是與 TCP相對應(yīng)的協(xié) 議。它是面向非連接的協(xié)議,它不與對方建立連接,而是直接就把數(shù) 據(jù)包發(fā)送過去!UDP適用于一次只傳送少量數(shù)據(jù)、對可靠性要求不高的應(yīng)用環(huán)境。tcp協(xié)議和udp協(xié)議的差別是否連接 面向連接 面

31、向非連接傳輸可靠性可靠不可靠應(yīng)用場合傳輸大量數(shù)據(jù)少量數(shù)據(jù)速度慢快加分題目:談?wù)勀銓oreData、FMDB SQLite的理解?你作 為開發(fā)你該怎么選擇?(自由發(fā)揮)Core Data面向?qū)ο?、Core Data 基于 model view controller (mvc ) 模式下,為 創(chuàng)建分解的cocoa應(yīng)用程序提供了一個靈活和強(qiáng)大的數(shù)據(jù)模型框架2、 Core Data可以是你以圖形界面的方式快速的定義app的數(shù)據(jù)模 型,同時在你的代碼中容易獲取到它好處能夠合理管理內(nèi)存,避免使用sql的麻煩,高效構(gòu)成(NSManagedObjectContext(被管理的數(shù)據(jù)上下文)/NSPersis

32、tentStoreCoordinator(持久化存儲助理)/NSManagedObject(被管理的數(shù)據(jù)記錄)/NSFetchRequest (獲取數(shù)據(jù)的請求)/NSEntityDescription(實(shí)體結(jié)構(gòu))等)SQLite:數(shù)據(jù)查詢:SQLite3_exec()函數(shù)執(zhí)行sql語句,在沒有返回值的情況 下(比如創(chuàng)建表格、插入記錄、刪除記錄等操作中)很好用。也會用到 SQLite3_stat 結(jié)構(gòu)、SQLite3_prepare_v2()函數(shù)、 sqlte3_step() 函數(shù)和 SQLite3_finalize() 函數(shù)。查詢分三個階段:準(zhǔn)備階段:SQLite3_stat、SQLite3_

33、prepare_v2()執(zhí)行階段:sqlte3_step()終止階段:SQLite3_finalize()FMDB:FMDB框架其實(shí)只是一層很薄的封裝,主要的類也就兩個:FMDatabase 和FMResultSet。在使用 FMDB的時候還需要導(dǎo)入 libSQLite3.0.dylib 。FMDB同時兼容ARC和非ARC工程,會自動根據(jù)工程配置來調(diào)整相關(guān) 的內(nèi)存管理代碼。FMDB常用類:FMDatabase : 一個單一的SQLite數(shù)據(jù)庫,用于執(zhí)行 SQL語句。 FMResultSet :執(zhí)行查詢一個 FMDatabase 結(jié)果集,這個和 android 的 Cursor 類似。FMDat

34、abaseQueue:在多個線程來執(zhí)行查詢和更新時會使用這個類。說說你對NSthread、NSOperation、GCD三者的理解?1) NSThread優(yōu)點(diǎn):NSThread比其他兩個輕量級缺點(diǎn):需要自己管理線程的生命周期,線程同步。線程同步對數(shù)據(jù)的加鎖會有 一定的系統(tǒng)開銷2) Cocoa NSOperation優(yōu)點(diǎn):不需要關(guān)心線程管理,數(shù)據(jù)同步的事情,可以把精力放在自己需要執(zhí)行的操作上。Cocoa operati on 相關(guān)的類是 NSOperati on, NSOperati on Queue.NSOperation是個抽象類,使用它必須用它的子類,可以實(shí)現(xiàn)它或者使用它定義 好的兩個子類

35、:NSInvocationOperation 和 NSBlockOperation.創(chuàng)建NSOperation子類的對象,把對象添加到NSOperationQueue隊(duì)列里執(zhí) 行。3) GCD (全優(yōu)點(diǎn))Grand Central dispatch(GCD)是Apple開發(fā)的一個多核編程的解決方案。在 iOS4.0開始之后才能使用。GCD是一個替代NSThread,NSOperatio nQueue,NS In vocatio nOperation等技術(shù)的很高效強(qiáng)大的技術(shù)。NSOperation 和 GCD的區(qū)別?1、GCD是底層的C語言構(gòu)成的API,而NSOperationQueue及相關(guān)對

36、象是Objc的對象。在GCD中,在隊(duì)列中執(zhí)行的是由block構(gòu)成的任務(wù),這是一個輕量級的數(shù)據(jù)結(jié)構(gòu);而Operation作為一個對象,為我們提供了更多的選擇;2、在NSOperationQueue中,我們可以隨時取消已經(jīng)設(shè)定要準(zhǔn)備執(zhí)行的任務(wù)(當(dāng)然,已經(jīng)開始的任務(wù)就無法阻止了),而GCD沒法停止已經(jīng)加入queue的block(其實(shí)是有的,但需要許多復(fù)雜的代碼);3、NSOperation能夠方便地設(shè)置依賴關(guān)系,我們可以讓一個Operation依賴于另一個 Operation,這樣的話盡管兩個 Operation處 于同一個并行隊(duì)列中,但前者會直到后者執(zhí)行完畢后再執(zhí)行;我們能將 KVO應(yīng)用在NSOperation中,可以監(jiān)聽一個 Operation是否 完成或取消,這樣子能比 GCD更加有效地掌控我們執(zhí)行的后臺任 務(wù);4、在NSOperation中,我們能夠設(shè)置 NSOperation的priority優(yōu)先級,能夠使同一個并行隊(duì)列中的任務(wù)區(qū)分先后地執(zhí)行,而在GCD中,我們只能區(qū)分不同任務(wù)隊(duì)列的優(yōu)先級,如果要區(qū)分block任務(wù)的優(yōu)先級,也需要大量的復(fù)雜代碼;我們能夠?qū)SOperation進(jìn)行繼承,在這之上添加成員變量與

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論