前言:YYModel是一個輕量級的model與dictionary相互轉(zhuǎn)換的框架,代碼結(jié)構(gòu)簡單,使用簡單,性能不錯
一,使用:
// 將 JSON (NSData,NSString,NSDictionary) 轉(zhuǎn)換為 Model:
User *user = [User ?yy_modelWithJSON:json];
// 將 Model 轉(zhuǎn)換為 JSON 對象:
NSDictionary *json = [user yy_modelToJSONObject];
二,源代碼分析
1,JSON轉(zhuǎn)model
User *user = [User? yy_modelWithJSON:json];
1:為判斷類型,即把NSData,NSString,NSDictionary轉(zhuǎn)為NSDictionary
2:方法變?yōu)榘袾SDictionary轉(zhuǎn)為model的問題,繼續(xù)看
1:獲取類對象
2:"返回緩存的模型類元數(shù)據(jù)"??
3:創(chuàng)建一個model對象
4:關(guān)鍵一步,繼續(xù)看
00:使一個數(shù)組所有的元素作用于某個函數(shù),
參數(shù)1,數(shù)組,這里應(yīng)該取了所有類的所有屬性
參數(shù)2,范圍
參數(shù)3,作用函數(shù)
參數(shù)4,不懂(應(yīng)該是上下文傳遞的一些預(yù)留參數(shù))
參數(shù)3的作用函數(shù),繼續(xù)
接下來是C的函數(shù)式編程模型,現(xiàn)在的思路是,我們要給model賦值需要什么?3個東西,model實例,value,value對應(yīng)的setter方法,剛好對應(yīng)上圖的1,2,3;方法4是進(jìn)行賦值,繼續(xù):
最后一步,正在的賦值操作,判斷值的類型,然后使用objc_msgSend方法進(jìn)行賦值操作
三,類/方法名解釋
1.NSNull:作為數(shù)組中的空值占位符? kCFNull:與NSNull一樣
2,object_getClass(self):獲取上一級的類(對象),[self class],self是實例時返回類對象,類時,返回自己,直至根元類
類也是一個對象,實例往上是: