iOS經(jīng)典面試題大全2021(附答案)

(iOS面試資料大全)

1、簡述你項(xiàng)目中常用的設(shè)計(jì)模式度液。它們有什么優(yōu)缺點(diǎn)?

常用的設(shè)計(jì)模式有:代理、觀察者镜粤、單例幢踏。

(1)單例:它是用來限制一個(gè)類只能創(chuàng)建一個(gè)對(duì)象髓需。這個(gè)對(duì)象中的屬性可以存儲(chǔ)全局共享的數(shù)據(jù)。所有的類都能訪問房蝉、設(shè)置此單例中的屬性數(shù)據(jù)僚匆。

優(yōu)點(diǎn):是它只會(huì)創(chuàng)建一個(gè)對(duì)象容易供外界訪問,節(jié)約性能搭幻。

缺點(diǎn):是一個(gè)類只有一個(gè)對(duì)象咧擂,可能造成責(zé)任過重,在一定程度上違背了“單一職責(zé)原則”檀蹋。單例模式中沒有抽象層松申,所以單例類的擴(kuò)展有很大的困難。不能過多創(chuàng)建單例俯逾,因?yàn)閱卫龔膭?chuàng)建到程序關(guān)閉前會(huì)一直存在攻臀,過多的單例會(huì)影響性能,浪費(fèi)系統(tǒng)資源纱昧。

(2)觀察者(KVO):它提供了觀察某一屬性變化的方法刨啸。當(dāng)指定對(duì)象的屬性發(fā)生改變后,它會(huì)自動(dòng)通知相應(yīng)的觀察者识脆。

優(yōu)點(diǎn):能提供被觀察者屬性的新值與舊值设联。用keypaths來觀察屬性,因此也可以觀察嵌套對(duì)象灼捂。

缺點(diǎn):需要注冊(cè)觀察者离例,實(shí)現(xiàn)observeValueForKeyPath:方法,屬性可以通過KVC的方法來修改悉稠。否則觀察者收不到通知宫蛆。

(3)代理:可以實(shí)現(xiàn)類與類之間一對(duì)一的通信。

優(yōu)點(diǎn):代理協(xié)議方法都有清晰的定義的猛。代理方法可以設(shè)置可選或必須實(shí)現(xiàn)耀盗。

缺點(diǎn):需要定義協(xié)議方法,需要設(shè)置代理對(duì)象卦尊,代理對(duì)象實(shí)現(xiàn)協(xié)議方法叛拷。內(nèi)存管理方面,需要注意循環(huán)引用問題岂却。

2忿薇、代理模式能否實(shí)現(xiàn)一對(duì)多的通信裙椭?

可以,采用多播委托的方式來實(shí)現(xiàn)署浩。多播委托:它是指允許創(chuàng)建方法的調(diào)用列表或者鏈表的能力揉燃。當(dāng)多播委托被調(diào)用時(shí),列表中的方法均自動(dòng)執(zhí)行筋栋。

普通代理只能是一對(duì)一的回調(diào)炊汤,無法做到一對(duì)多的回調(diào),而多播委托正式對(duì)delegate的一種擴(kuò)展與延伸二汛,多了一個(gè)注冊(cè)和取消的過程婿崭。任何需要回調(diào)的對(duì)象都必須先注冊(cè)拨拓。

3肴颊、 重復(fù)注冊(cè)通知會(huì)有問題嗎?

不會(huì)出現(xiàn)問題渣磷,若多次發(fā)送同一通知婿着,對(duì)方就會(huì)多次響應(yīng)。如果重復(fù)注冊(cè)通知醋界,也會(huì)有多次響應(yīng)的效果竟宋。為了避免重復(fù)注冊(cè)通知而造成的錯(cuò)誤,建議每次注冊(cè)一個(gè)通知前形纺,可以移除一次該通知丘侠。

4、項(xiàng)目中是否用過多線程編程逐样?簡述你常用的多線程實(shí)現(xiàn)方式蜗字?

常用的是GCD。

GCD是蘋果開發(fā)中一個(gè)多核編程的解決方案脂新。GCD的隊(duì)列分為兩種類型挪捕,SerialDispatchQueue與ConcurrentDispatchQueue。系統(tǒng)默認(rèn)提供了一個(gè)dispatch_get_main_queue争便,一個(gè)dispatch_get_global_queue级零。

5、簡述NSOperationQueue與GCD的區(qū)別滞乙。

(1) GCD是底層的C語言構(gòu)成的API奏纪。NSOperationQueue及相關(guān)對(duì)象是Objc對(duì)象。在GCD中斩启,在隊(duì)列中執(zhí)行的是由block構(gòu)成的任務(wù)亥贸,這是一個(gè)輕量級(jí)的數(shù)據(jù)結(jié)構(gòu)。而Operation作為一個(gè)對(duì)象浇垦,為我們提供了更多的選擇炕置。

(2) 在NSOperationQueue中荣挨,我們可以取消任務(wù),而GCD沒法停止已經(jīng)加入queue的block朴摊。

(3) NSOperation能夠方便的設(shè)置依賴關(guān)系默垄。還能設(shè)置NSOperation的priority優(yōu)先級(jí),能夠使同一個(gè)并行隊(duì)列中的任務(wù)區(qū)分先后地執(zhí)行甚纲。在GCD中口锭,我們只能區(qū)分不同任務(wù)隊(duì)列的優(yōu)先級(jí),如果要區(qū)分block任務(wù)優(yōu)先級(jí)也需要大量復(fù)雜代碼介杆。
NSOperation還可以設(shè)置并發(fā)數(shù)鹃操。

6、實(shí)現(xiàn)多線程有哪幾種方式春哨?

(1)NSThread:detachNewThreadSelector:

(2)繼承NSOperation

(3)GCD:dispatch_async

(4)NSObject:performSelectorInBackground:

7荆隘、KVC、KVO是什么赴背?簡述KVO的實(shí)現(xiàn)原理椰拒。KVO能否監(jiān)聽數(shù)組?如何實(shí)現(xiàn)凰荚?

KVC:鍵值編碼燃观,它是一種間接訪問對(duì)象實(shí)例變量機(jī)制,可以不通過存取方法訪問對(duì)象的實(shí)例變量便瑟。

KVO:鍵值觀察缆毁,它可以使對(duì)象獲取其他對(duì)象屬性變化的通知機(jī)制。

KVO是根據(jù)isa-swizzling技術(shù)來實(shí)現(xiàn)的到涂,主要依據(jù)runtime的強(qiáng)大動(dòng)態(tài)能力脊框。當(dāng)給某個(gè)對(duì)象第一次添加KVO監(jiān)聽的時(shí)候,運(yùn)行時(shí)會(huì)動(dòng)態(tài)的創(chuàng)建一個(gè)被監(jiān)聽對(duì)象的派生類养盗,然后重寫KVO需要監(jiān)聽屬性值對(duì)應(yīng)的setter方法缚陷,在這個(gè)setter方法中實(shí)現(xiàn)了通知機(jī)制。最后將被監(jiān)聽對(duì)象的isa指向動(dòng)態(tài)創(chuàng)建的派生類往核。這樣當(dāng)使用KVC修改屬性值時(shí)箫爷,就會(huì)調(diào)用動(dòng)態(tài)創(chuàng)建的派生類中對(duì)應(yīng)的setter方法,觸發(fā)通知機(jī)制聂儒,從而實(shí)現(xiàn)了KVO了虎锚。
KVO可以監(jiān)聽數(shù)組。

實(shí)現(xiàn) NSMutableArray 的增刪改操作遵從 KVC 的規(guī)則衩婚,需要實(shí)現(xiàn)其對(duì)應(yīng)方法:

增操作 -insertObject:inAtIndex: 或者 -insert:atIndexes:

刪操作 -removeObjectFromAtIndex: 或者 -removeAtIndexes:

改操作 -replaceObjectInAtIndex:withObject: 或者 -replaceAtIndexes:with:

并將這些接口暴露給調(diào)用者窜护,在對(duì)數(shù)組進(jìn)行操作時(shí)需使用上述實(shí)現(xiàn)的接口。

8非春、簡單說下C++柱徙,JAVA缓屠,Objective-C這幾種語言有什么區(qū)別?

Objective-C與JAVA都是單繼承語言护侮,C++是多繼承語言敌完。

Objective-C不支持命名空間機(jī)制,通過類名前面加前綴NS來區(qū)分羊初。

Objective-C與JAVA不支持運(yùn)算符重載滨溉。

Objective-C協(xié)議可選實(shí)現(xiàn),JAVA的接口必須實(shí)現(xiàn)长赞。

9晦攒、數(shù)組添加nil元素有問題嗎?字典object與key可以設(shè)置為nil嗎得哆?

會(huì)有問題脯颜,數(shù)組中添加nil元素,程序會(huì)崩潰柳恐!報(bào)object cannot be nil錯(cuò)誤伐脖。字典的key不能為nil热幔,否則會(huì)造成崩潰乐设。字典的object也不能為nil。

10绎巨、oc中向一個(gè)nil對(duì)象發(fā)送消息會(huì)出現(xiàn)問題嗎捧韵?

不會(huì)出現(xiàn)問題移稳,因?yàn)閛bjc是動(dòng)態(tài)語言,每個(gè)方法在運(yùn)行時(shí)會(huì)被動(dòng)態(tài)轉(zhuǎn)為消息發(fā)送。即:objc_msgSend(receiver染苛,selector)。objc在向一個(gè)對(duì)象發(fā)送消息時(shí)巴刻,runtime庫會(huì)根據(jù)對(duì)象的isa指針找到該對(duì)象實(shí)際所屬的類狠鸳,然后在該類中的方法列表以及其父類方法列表中尋找方法運(yùn)行,然后在發(fā)送消息的時(shí)候留瞳,objc_msgSend方法不會(huì)返回值拒迅,所謂的返回內(nèi)容都是具體調(diào)用時(shí)執(zhí)行的。 那么她倘,回到本題璧微,如果向一個(gè)nil對(duì)象發(fā)送消息,首先在尋找對(duì)象的isa指針時(shí)就是0地址返回了硬梁,所以不會(huì)出現(xiàn)任何錯(cuò)誤前硫。

11、可變數(shù)組是線程安全的嗎荧止?什么情況下不安全屹电?可以加鎖嗎阶剑?它鎖住的是添加元素操作還是數(shù)組對(duì)象?

可變數(shù)組不是線程安全的危号,在異步讀取數(shù)據(jù)的情況下是不安全的个扰。可以加鎖葱色,鎖住的是數(shù)組递宅。

12、數(shù)組能添加一個(gè)block嗎苍狰?數(shù)組添加一個(gè)block之后再取出來办龄,這個(gè)block還有用嗎?

可以淋昭,還有用俐填,它只是多retain了一次

13、NSMutableDictionary中的setObject:forKey:與setValue:forKey:方法有什么區(qū)別?

setObject:forkey:中value是不能夠?yàn)閚il的翔忽,不然會(huì)報(bào)錯(cuò)英融。

setValue:forKey:中的value能夠?yàn)閚il,但是當(dāng)value為nil的時(shí)候歇式,會(huì)自動(dòng)調(diào)用removeObject:forKey方法驶悟。

setValue:forKey:中的key的參數(shù)只能是NSString類型,而setObject:forKey是可以任何類型材失。

14痕鳍、簡述copy與mutablecopy的區(qū)別。

(1)非容器對(duì)象:

對(duì)不可變對(duì)象:copy是指針復(fù)制(淺拷貝)龙巨, mutableCopy是對(duì)象復(fù)制(深拷貝)笼呆。
對(duì)可變對(duì)象:copy和mutableCopy都是對(duì)象復(fù)制。

(2)容器對(duì)象:

對(duì)不可變對(duì)象:copy是指針復(fù)制旨别,mutableCopy是對(duì)象復(fù)制诗赌。

對(duì)可變對(duì)象:copy和mutableCopy都是對(duì)象復(fù)制,只是返回的對(duì)象類型不一樣秸弛,前者返回的是不可變對(duì)象铭若,后者返回的是可變對(duì)象。

容器對(duì)象復(fù)制僅限于對(duì)象本身胆屿,對(duì)象元素仍然是指針復(fù)制奥喻。

15、簡述weak與assign的區(qū)別非迹。

weak用來修飾對(duì)象环鲤,不能修飾基本數(shù)據(jù)類型。assign一般用來修飾基本數(shù)據(jù)類型憎兽。weak修飾對(duì)象冷离,在對(duì)象釋放之后會(huì)把對(duì)象置為nil吵冒。

16、ARC下西剥,不顯示指定任何屬性關(guān)鍵字時(shí)痹栖,默認(rèn)的關(guān)鍵字有哪些?

基本數(shù)據(jù)類型默認(rèn)修飾關(guān)鍵字:atomic,readwrite,assign

普通的OC對(duì)象默認(rèn)修飾關(guān)鍵字:atomic,readwrite,strong

17瞭空、weak在什么時(shí)候置空揪阿?

runtime 對(duì)注冊(cè)的類, 會(huì)進(jìn)行布局咆畏,對(duì)于 weak 對(duì)象會(huì)放入一個(gè) hash 表中南捂。 用 weak 指向的對(duì)象內(nèi)存地址作為 key,當(dāng)此對(duì)象的引用計(jì)數(shù)為0的時(shí)候會(huì) dealloc旧找,假如 weak 指向的對(duì)象內(nèi)存地址是a溺健,那么就會(huì)以a為鍵, 在這個(gè) weak 表中搜索钮蛛,找到所有以a為鍵的 weak 對(duì)象鞭缭,從而設(shè)置為 nil。

我們可以設(shè)計(jì)一個(gè)函數(shù)(偽代碼)來表示上述機(jī)制:

objc_storeWeak(&a, b)函數(shù):

objc_storeWeak函數(shù)把第二個(gè)參數(shù)–賦值對(duì)象(b)的內(nèi)存地址作為鍵值key魏颓,將第一個(gè)參數(shù)–weak修飾的屬性變量(a)的內(nèi)存地址(&a)作為value岭辣,注冊(cè)到 weak 表中。如果第二個(gè)參數(shù)(b)為0(nil)琼开,那么把變量(a)的內(nèi)存地址(&a)從weak表中刪除易结,
你可以把objc_storeWeak(&a, b)理解為:objc_storeWeak(value, key)枕荞,并且當(dāng)key變nil柜候,將value置nil。

在b非nil時(shí)躏精,a和b指向同一個(gè)內(nèi)存地址渣刷,在b變nil時(shí),a變nil矗烛。此時(shí)向a發(fā)送消息不會(huì)崩潰:在Objective-C中向nil發(fā)送消息是安全的辅柴。

而如果a是由assign修飾的,則: 在b非nil時(shí)瞭吃,a和b指向同一個(gè)內(nèi)存地址碌嘀,在b變nil時(shí),a還是指向該內(nèi)存地址歪架,變野指針股冗。此時(shí)向a發(fā)送消息極易崩潰。

下面我們將基于objc_storeWeak(&a, b)函數(shù)和蚪,使用偽代碼模擬“runtime如何實(shí)現(xiàn)weak屬性”:

// 使用偽代碼模擬:runtime如何實(shí)現(xiàn)weak屬性
id obj1;
objc_initWeak(&obj1, obj);
/obj引用計(jì)數(shù)變?yōu)?止状,變量作用域結(jié)束/
objc_destroyWeak(&obj1);

下面對(duì)用到的兩個(gè)方法objc_initWeak和objc_destroyWeak做下解釋:

總體說來烹棉,作用是: 通過objc_initWeak函數(shù)初始化“附有weak修飾符的變量(obj1)”,在變量作用域結(jié)束時(shí)通過objc_destoryWeak函數(shù)釋放該變量(obj1)怯疤。

下面分別介紹下方法的內(nèi)部實(shí)現(xiàn):

objc_initWeak函數(shù)的實(shí)現(xiàn)是這樣的:在將“附有weak修飾符的變量(obj1)”初始化為0(nil)后浆洗,會(huì)將“賦值對(duì)象”(obj)作為參數(shù),調(diào)用objc_storeWeak函數(shù)集峦。
obj1 = 0伏社;
obj_storeWeak(&obj1, obj);

也就是說:
weak 修飾的指針默認(rèn)值是 nil (在Objective-C中向nil發(fā)送消息是安全的)
然后obj_destroyWeak函數(shù)將0(nil)作為參數(shù),調(diào)用objc_storeWeak函數(shù)塔淤。
objc_storeWeak(&obj1, 0);
前面的源代碼與下列源代碼相同洛口。

// 使用偽代碼模擬:runtime如何實(shí)現(xiàn)weak屬性
id obj1;
obj1 = 0;
objc_storeWeak(&obj1, obj);
/* … obj的引用計(jì)數(shù)變?yōu)?,被置nil … */
objc_storeWeak(&obj1, 0);

objc_storeWeak函數(shù)把第二個(gè)參數(shù)–賦值對(duì)象(obj)的內(nèi)存地址作為鍵值凯沪,將第一個(gè)參數(shù)–weak修飾的屬性變量(obj1)的內(nèi)存地址注冊(cè)到 weak 表中第焰。如果第二個(gè)參數(shù)(obj)為0(nil),那么把變量(obj1)的地址從weak表中刪除妨马,在后面的相關(guān)一題會(huì)詳解挺举。

以上內(nèi)容總結(jié)如下:

(1)從weak表中獲取廢棄對(duì)象的地址為鍵值的記錄

(2)將包含在記錄中的所有附有__weak修飾符變量的地址,賦值為nil

(3)從weak表中刪除該記錄

(4)從引用計(jì)數(shù)表中刪除廢棄對(duì)象的地址為鍵值的記錄烘跺。

18湘纵、自動(dòng)釋放池用過嗎?它是什么時(shí)候釋放滤淳?什么情況下對(duì)象會(huì)被加入到自動(dòng)釋放池梧喷,它會(huì)加入到哪個(gè)自動(dòng)釋放池?

主線程默認(rèn)開啟runloop,同時(shí)runloop會(huì)自動(dòng)創(chuàng)建一個(gè)autoreleasepool,autorelease對(duì)象會(huì)自動(dòng)被加入autoreleasepool中脖咐,一次runloop后清空自動(dòng)釋放池铺敌。用__autoreleasing修飾符修飾,或類方法創(chuàng)建會(huì)自動(dòng)加入autoreleasepool屁擅。它會(huì)加入到最近的autoreleasepool中偿凭。

19、你知道iOS中有哪些數(shù)據(jù)持久化方式嗎派歌?請(qǐng)簡要加以說明弯囊。

iOS中數(shù)據(jù)持久化方式有:SQLite3數(shù)據(jù)庫,CoreData胶果,文件歸檔匾嘱,屬性列表(plist文件寫入)。

屬性列表:涉及的主要類是NSUserDefaults早抠,存儲(chǔ)小量的數(shù)據(jù)霎烙。

文件歸檔:對(duì)象必須實(shí)現(xiàn)NSCoding協(xié)議。實(shí)現(xiàn)initWithCoder:方法與encodeWithCoder方法。同時(shí)也建議實(shí)現(xiàn)NSCopying協(xié)議吼过。

SQLite3數(shù)據(jù)庫:SQLite是一個(gè)開源的嵌入式關(guān)系數(shù)據(jù)庫锐秦。可移植性好盗忱,容易使用酱床,需要內(nèi)存開銷小。適合嵌入式設(shè)備趟佃。

CoreData:它可以使用SQLite保存數(shù)據(jù)扇谣,而且不需要寫SQL語句。另外它還可以使用XML方式保存數(shù)據(jù)闲昭。要使用CoreData罐寨,需要在Xcode中的數(shù)據(jù)模型編輯器中設(shè)計(jì)好各個(gè)實(shí)體以及定義好他們的屬性和關(guān)系。通過操作這些對(duì)象來完成數(shù)據(jù)的持久化序矩。

20鸯绿、fmdb中支持多線程嗎?它是如何實(shí)現(xiàn)的簸淀!

支持多線程瓶蝴。它里面有個(gè)FMDatabaseQueue類。它看似是一個(gè)隊(duì)列租幕,實(shí)際上它本身并不是舷手,它繼承NSObject,通過內(nèi)部創(chuàng)建一個(gè)Serial的dipatch_queue_t來處理inDatabase和inTransaction傳入的Block劲绪,所以當(dāng)我們?cè)谥骶€程(或者后臺(tái))調(diào)用inDatabase或者inTransaction時(shí)男窟,代碼實(shí)際上是同步的。FMDatabaseQueue如此設(shè)計(jì)的目的是為了避免并發(fā)訪問數(shù)據(jù)庫的線程安全問題贾富,所有的數(shù)據(jù)庫訪問都是同步執(zhí)行歉眷,比@synchronized與NSLock效率高。

21祷安、簡述category與extension的區(qū)別姥芥。Category與extension加載的時(shí)機(jī)。

category中只能增加方法汇鞭,不可添加實(shí)例變量(可添加屬性)。extension不僅可以增加方法庸追,還可以增加實(shí)例變量或?qū)傩裕ㄋ接械模┗艚尽xtension不能像category一樣有獨(dú)立的實(shí)現(xiàn)部分。category是運(yùn)行時(shí)決定的淡溯。extension是編譯期決定的读整。

22、category的方法能被子類繼承嗎咱娶?它覆蓋原有類的方法后米间,原有類的方法還能調(diào)用嗎强品?如果能,你說明理由屈糊。

category的方法可以被子類繼承的榛。category并不是絕對(duì)的覆蓋了類的同名方法,而是category的方法排在了類的同名方法之前逻锐,方法的檢索方式是順序檢索夫晌,所以在調(diào)用方法時(shí),調(diào)用到的同名方法是category昧诱,從而產(chǎn)生了覆蓋晓淀。
利用運(yùn)行時(shí)遍歷方法列表,可以調(diào)用被category覆蓋的方法盏档。

23凶掰、 擴(kuò)展一個(gè)類的方式用繼承好還是category好?請(qǐng)說明理由蜈亩。

用類目好锄俄。因?yàn)槔^承還需要定義子類。類目不需要通過創(chuàng)建子類來增加現(xiàn)有類的方法勺拣。用category去重寫一個(gè)類的方法奶赠,僅僅只對(duì)本category有效,不會(huì)影響到其他類與原有類的關(guān)系药有。

24毅戈、 block有幾種類型?block的實(shí)現(xiàn)愤惰?

block分為三種類型:

_NSConcreteGlobalBlock

_NSConcreteStackBlock

_NSConcreteMallocBlock

block:匿名函數(shù)

25苇经、 Swift用的多嗎?簡單的說說1.0與2.0的區(qū)別宦言。

swift2.0新增:guard語句扇单,異常處理,協(xié)議擴(kuò)展奠旺,打印語句改變蜘澜,avaliable檢查,do-while語句重命名:repeat-while响疚,defer關(guān)鍵字

26鄙信、 在Swift用有沒有用過defer關(guān)鍵字?

對(duì)defer語句進(jìn)行的延遲忿晕,函數(shù)結(jié)束時(shí)調(diào)用装诡。

27、 SDWebImage的圖片保存在什么位置?

圖片保存在沙盒中的library/caches文件夾下鸦采。

28宾巍、 Objective-C中類目為什么不能添加實(shí)例變量?

因?yàn)樵谶\(yùn)行時(shí)渔伯,對(duì)象的內(nèi)存布局已經(jīng)確定顶霞,如果添加實(shí)例變量會(huì)破壞類的內(nèi)部布局。

29咱旱、 Objective-C中的協(xié)議默認(rèn)是@optional還是@require确丢?在使用協(xié)議的時(shí)候應(yīng)當(dāng)注意哪些問題?

Objective-C中的協(xié)議默是必須實(shí)現(xiàn)的@require吐限,使用協(xié)議的時(shí)候應(yīng)當(dāng)注意循環(huán)引用問題鲜侥,多個(gè)協(xié)議之間采用逗號(hào)分隔。

30诸典、 Objective-C的協(xié)議與JAVA中的接口有什么區(qū)別描函?

OC中的協(xié)議可選實(shí)現(xiàn),JAVA中的接口必須實(shí)現(xiàn)狐粱。

31舀寓、 類目的應(yīng)用場景有哪些?

(1)可以把類的實(shí)現(xiàn)分開在幾個(gè)不同的文件里面

(2)聲明私有方法

(3)模擬多繼承

(4)把Framework的私有方法公開

32肌蜻、 self與super的區(qū)別互墓?

super本質(zhì)上是一個(gè)編譯器標(biāo)示符,它和self指向的是同一個(gè)消息接受者蒋搜,兩者不同在于:super會(huì)告訴編譯器篡撵,調(diào)用class這個(gè)方法時(shí),要去父類方法豆挽,而不是本類方法育谬。

33、 圖片緩存為什么不保存到沙盒下的tmp文件目錄中帮哈?

因?yàn)閠mp文件夾是用來存放臨時(shí)文件膛檀,iTunes不會(huì)備份和恢復(fù)此目錄,此目錄下文件可能會(huì)在應(yīng)用退出后刪除娘侍。

34咖刃、 NSURLConnection與NSURLSession。

NSURLConnection它是CoreFoundation/CFNetwork框架的API之上的一個(gè)抽象私蕾。

NSURLConnection這個(gè)名字實(shí)際指代Foundation框架的URL加載系統(tǒng)中一系列有關(guān)聯(lián)的組件:NSURLRequest僵缺、NSURLResponse、NSURLProtocol踩叭、NSURLCache、NSHTTPCookieStorage、NSURLCredentialStorage以及同名類NSURLConnection容贝。NSURLRequest 被傳遞給 NSURLConnection自脯。被委托對(duì)象(遵守以前的非正式協(xié)議 和 )異步地返回一個(gè) NSURLResponse 以及包含服務(wù)器返回信息的 NSData。

NSURLSession包括:NSURLRequest斤富、NSURLCache膏潮、NSURLSession、NSURLSessionConfiguration满力、NSURLSessionDataTask焕参、NSURLSessionUploadTask、NSURLSessionDownloadTask油额。
它與NSURLConnection的區(qū)別在于:NSURLSession最直接的改進(jìn)就是可以配置每個(gè)Session的緩存叠纷,協(xié)議,cookie以及正式策略潦嘶。甚至跨程序共享這些信息涩嚣。每個(gè)NSURLSession對(duì)象都由一個(gè)NSURLSessionConfiguration對(duì)象來進(jìn)行初始化。
session task:負(fù)責(zé)處理數(shù)據(jù)的加載以及文件和數(shù)據(jù)在客戶端與服務(wù)器之間的上次和下載掂僵。

35航厚、 簡述ARC與MRC的區(qū)別。

ARC:自動(dòng)引用計(jì)數(shù)锰蓬。MRC:手動(dòng)引用計(jì)數(shù)幔睬。ARC是把內(nèi)存交給系統(tǒng)管理。系統(tǒng)會(huì)在編譯的時(shí)候自動(dòng)插入retain/release芹扭。MRC則需要手動(dòng)管理對(duì)象的引用計(jì)數(shù)麻顶。當(dāng)你alloc,new,copy,mutablecopy或者retain一個(gè)對(duì)象時(shí),你就有義務(wù)向它發(fā)送一條release或autorelease消息冯勉。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末澈蚌,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子灼狰,更是在濱河造成了極大的恐慌宛瞄,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,919評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件交胚,死亡現(xiàn)場離奇詭異份汗,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)蝴簇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門杯活,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人熬词,你說我怎么就攤上這事旁钧∥兀” “怎么了?”我有些...
    開封第一講書人閱讀 163,316評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵歪今,是天一觀的道長嚎幸。 經(jīng)常有香客問我,道長寄猩,這世上最難降的妖魔是什么嫉晶? 我笑而不...
    開封第一講書人閱讀 58,294評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮田篇,結(jié)果婚禮上替废,老公的妹妹穿的比我還像新娘。我一直安慰自己泊柬,他們只是感情好椎镣,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,318評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著彬呻,像睡著了一般衣陶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上闸氮,一...
    開封第一講書人閱讀 51,245評(píng)論 1 299
  • 那天剪况,我揣著相機(jī)與錄音,去河邊找鬼蒲跨。 笑死译断,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的或悲。 我是一名探鬼主播孙咪,決...
    沈念sama閱讀 40,120評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼巡语!你這毒婦竟也來了翎蹈?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,964評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤男公,失蹤者是張志新(化名)和其女友劉穎荤堪,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體枢赔,經(jīng)...
    沈念sama閱讀 45,376評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡澄阳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,592評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了踏拜。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片碎赢。...
    茶點(diǎn)故事閱讀 39,764評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖速梗,靈堂內(nèi)的尸體忽然破棺而出肮塞,到底是詐尸還是另有隱情襟齿,我是刑警寧澤,帶...
    沈念sama閱讀 35,460評(píng)論 5 344
  • 正文 年R本政府宣布峦嗤,位于F島的核電站蕊唐,受9級(jí)特大地震影響屋摔,放射性物質(zhì)發(fā)生泄漏烁设。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,070評(píng)論 3 327
  • 文/蒙蒙 一钓试、第九天 我趴在偏房一處隱蔽的房頂上張望装黑。 院中可真熱鬧,春花似錦弓熏、人聲如沸恋谭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽疚颊。三九已至,卻和暖如春信认,著一層夾襖步出監(jiān)牢的瞬間材义,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評(píng)論 1 269
  • 我被黑心中介騙來泰國打工嫁赏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留其掂,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,819評(píng)論 2 370
  • 正文 我出身青樓潦蝇,卻偏偏與公主長得像款熬,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子攘乒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,665評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容