5.AFNetworking實現(xiàn)原理
1堤如、提交GET請求和提交POST請求
a迹蛤、創(chuàng)建AFHTTPRequestOpeartionManger對象
b集歇、根據(jù)服務(wù)器內(nèi)容的不同,為AFHTTPRequestOpeartionManger對象指定不同的解析器览爵,該對象默認的解析器是JSON和Plist文件解析器。如果服務(wù)器的數(shù)據(jù)是XML格式則需要手動的更改解析器
c帘不、發(fā)送GET請求:用Manager對象調(diào)用GET:parameters:success:failure:方法即可掂摔,success代碼塊和failue代碼塊在網(wǎng)絡(luò)請求成功/失敗過后調(diào)用术羔。
d、success:參數(shù)指定了代碼塊中處理服務(wù)器響應(yīng)成功的正確數(shù)據(jù)乙漓,failue:參數(shù)指定了代碼塊中處理服務(wù)器響應(yīng)失敗的錯誤數(shù)據(jù)级历、
2、創(chuàng)建一個下載文件的任務(wù)
AFURLSessionManager創(chuàng)建并完善了一個NSURLSession的對象基于遵從NSURLSessionDelegate與NSURLSessionDataDelegate協(xié)議NSURLSessionConfigration對象叭披。
3鱼喉、創(chuàng)建一個上傳文件的任務(wù)
4、處理JSON或Plist響應(yīng)
IOS應(yīng)用在處理JSON和Plist響應(yīng)的時候可以十分輕便將其轉(zhuǎn)換成NSDictionary對象或者NSArray對像趋观,AFHTTPRequestOpeartionManager默認就可以處理JSON或Plist響應(yīng)扛禽,也就是說當我們response.MIMEType為appication/json、text/json,AFHTTPRequestOpeartionManager默認就可以處理皱坛,無需再次指定服務(wù)器響應(yīng)解析器编曼。
6.kvo和kvc的區(qū)別
KVC,即是指 NSKeyValueCoding剩辟,鍵值編碼掐场,一個非正式的 Protocol,是一種可以通過字符串的名字(key)來訪問類屬性的機制贩猎。
KVO,即是指 Key-Value Observing, 建立在 KVC 之上熊户,它能夠?qū)崿F(xiàn)一個對象的 key path 值變化的觀察監(jiān)聽。
7.幾種設(shè)置模式的區(qū)別:MVC吭服、工廠嚷堡、單例、代理艇棕、KVO
1.MVC
模型-視圖-控制器(MVC)設(shè)計模式蝌戒,MVC根據(jù)角色劃分類,涉及到三個角色:
Model:模型保存應(yīng)用程序的數(shù)據(jù)沼琉。
View:視圖是模型的可視化表示以及用戶交互的控件北苟。
Controller:控制器是一個協(xié)調(diào)所有工作的中介者。它訪問模型中的數(shù)據(jù)并在視圖中展示它們打瘪,同時它們還監(jiān)聽事件和操作數(shù)據(jù)友鼻。
2.單例設(shè)計模式
單例設(shè)計模式可以確保對于一個類只有一個實例(對象)存在傻昙,這個對象有一個全局的訪問點。通常采用懶加載的方式在第一次用到對象的時候才去創(chuàng)建它彩扔。
3.代理模式
委托代理就是把某個對象要做的事情委托給別的對象去做屋匕。那么別的隊對象就是這個對象的代理,代替他來打理要做的事情借杰。
4.工廠模式
工廠模式即實例化對象过吻,用工廠方法代替new操作,又被稱作虛構(gòu)造器蔗衡。它的好處就在于將工廠和產(chǎn)品之間的耦合降低纤虽,將具體產(chǎn)品的構(gòu)造過程放在了具體工廠類里面。一般當你在一個類不知掉它所必須創(chuàng)建的對象的類時或者一個類希望有它的子類決定所創(chuàng)建的對象時绞惦,都可以使用工廠方法逼纸。
5.KVO
key-Value Observing,它提供一種機制,當指定的對象的屬性被修改后济蝉,則對象就會接受到通知杰刽。每次制定的被觀察的對象的屬性被修改后,KVO自動通知相應(yīng)的觀察者王滤。
6.通知
Notification-NotificationCenter機制使用了操作系統(tǒng)的功能贺嫂。通過NotificationCenter可以讓對象之間進行通訊,這些對象相互間可以不認識雁乡。當你用一個并行的流來推送通知第喳,或者刷新數(shù)據(jù)庫,并希望在界面中能夠看到時踱稍,這非常有用曲饱。
8.類方法和實例方法的區(qū)別
1.類變量、方法:所謂的類變量(class variables)珠月、類方法(class methods),指的是用“static”修 飾符聲明的變量扩淀、方法。其地位與類等同啤挎。在內(nèi)存中只有一個地方存放驻谆。不會因?qū)嵗a(chǎn)生而變動。但其數(shù)值(value)卻可通過實例來變更侵浸。當系統(tǒng)在程序中第一次遇到一個類時,便會 拷貝一份所有的類變量(在內(nèi)存里旺韭。然后那些屬乎此類的實例便分享這些類變量。因此,你可以借著實 例來存取類變量和類方法,而不用將類實例化后才取用掏觉。
2、實例變量值漫、方法:實例方法指的 是那些并沒有用static修飾符的mathods澳腹。當你從一種類產(chǎn)生一個實例時,就等于創(chuàng)建了一個屬于此類類型的對象。而實例產(chǎn)生后,便擁有與類“同類型”但內(nèi)存地址不同的變量(除了類變量外),稱之為實例變量(instance variables)。每個實例各自擁有自己的變量,而系統(tǒng)就會為這些實例變量個別配置內(nèi)存酱塔。但實例方法 卻仍留在類里,并不會再復(fù)制到實例中沥邻。但你仍可以調(diào)用這些方法來令實例對象做些事。
或者
1.類方法只能訪問類的成員變量羊娃,不能訪問實例變量唐全;實例方法不僅可以訪問類的成員變量,也可以訪問實例變量蕊玷。
2.類方法只能調(diào)用類方法邮利,而實例方法可以調(diào)用類方法跟實例方法
9.繼承、擴展和分類的區(qū)別
類擴展與分類的區(qū)別:
1.分類是為原有類增加方法垃帅,能被繼承和外界使用延届,在OC中通過過增加一個category文件(一個.h文件一個.m文件)的方法使用,擴展原有類的方法贸诚,不能增加成員變量
2.擴展是為類增加私有的成員變量和方法聲明方庭。
分類和繼承的區(qū)別:
1.分類是對方法的擴展,不能添加成員變量酱固。繼承可以在原來父類的成員變量的基礎(chǔ)上械念,添加新的成員變量。
2.分類只能添加新的方法运悲,不能修改和刪除原來的方法订讼。繼承可以增加、修改和刪除方法扇苞。
3.分類不提倡對原有的方法進行重載欺殿。繼承可以通過使用super對原來方法進行重載。
4.分類可以被繼承鳖敷,如果一個父類中定義了類別脖苏,那么其子類中也會繼承此類別。