// 類型編碼
// @encode
/*
char *typeChar1 = @encode(int32_t);
char *typeChar2 = @encode(NSArray);
NSLog(@"%s, %s", typeChar1, typeChar2);
// i, {NSArray=#}
*/
// 這個類型編碼 @encode 最常用的地方是在傳遞參數(shù)時斑举,由于類型確實,需要類型編碼進行輔助以保證類型信息也能夠被傳遞
//? NSValue 的屬性? .objCType 獲取類型指針
let int: Int = 0
let float: Float = 0.0
let double: Double = 0.0
let initNumber: NSNumber = int as NSNumber
let floatNumber: NSNumber = float as NSNumber
let doubleNumber: NSNumber = double as NSNumber
let str1 = String(validatingUTF8: initNumber.objCType)? ? ? // q
let str2 = String(validatingUTF8: floatNumber.objCType)? ? // f
let str3 = String(validatingUTF8: doubleNumber.objCType)? ? // d
let p = NSValue(cgPoint: CGPoint(x: 3, y: 3))
let pStr = String(validatingUTF8: p.objCType)? ? ? // {CGPoint=dd}
let t = NSValue(cgAffineTransform:.identity)
let tStr = String(validatingUTF8: t.objCType)// {CGAffineTransform=dddddd}
// 有了這些細心换棚,我們就能夠在這類信息可能損害的時候構建起準確的類型轉換和還原
// 比如,想要在 NSUserDefaults中存儲一些不同類型的數(shù)字,然后讀取的時候再準確的還原為之前的類型从隆,就可以使用類簇來獲取這些數(shù)字轉化為 NSNumber 后真真的類型乳乌,然后存儲袱蜡。 使用 objcType 獲取類型傅瞻,然后將數(shù)字本身和類型的字符串一起存儲踢代。在讀取的時 就可以通過匹配類型字符串和類型的編碼,確定數(shù)字本來所屬的類型嗅骄,從而直接得到想 Int 或者 Double這樣的類型明確的量