iOS問(wèn)題合集

  1. NSKeyedUnarchiver新版本警告
[NSKeyedUnarchiver validateAllowedClass:forKey:] allowed unarchiving safe plist type ''NSString' (0x1e02a43c0) [/System/Library/Frameworks/Foundation.framework]' for key 'accessToken', even though it was not explicitly included in the client allowed classes set: '{(
    "'LHUserInfo' (0x1023ff680) [/private/var/containers/Bundle/Application/4C71BA36-B100-410E-8ADC-49D57182A3F1/LeHooWorld.app]"
)}'. This will be disallowed in the future.

當(dāng)iOS15.0以上版本使用NSKeyedUnarchiver進(jìn)行解碼的時(shí)候,對(duì)于解碼非特定類型的對(duì)象,Apple引入了新的反序列化安全策略的警告。
在iOS 15及以后的版本中,NSKeyedUnarchiver需要知道將要解碼哪些對(duì)象的類型。這是為了防止應(yīng)用在反序列化數(shù)據(jù)時(shí),可能會(huì)誤解碼成并非期望的對(duì)象類型,這種情況可能會(huì)引起安全問(wèn)題。此策略的應(yīng)用方式是,當(dāng)我們嘗試反序列化一個(gè)對(duì)象時(shí),我們需要顯式地告訴 NSKeyedUnarchiver 我們希望解碼哪些類。如果沒(méi)有列出的類被解碼,系統(tǒng)就會(huì)產(chǎn)生這個(gè)警告。

你看到的這個(gè)警告是因?yàn)槟愕拇a在嘗試解碼一個(gè) NSString 對(duì)象,但 NSString 并沒(méi)有被明確地添加到 NSKeyedUnarchiver 的允許解碼的類列表中。但由于 NSString 是一個(gè)安全的Plist類型,所以這個(gè)操作還是被允許的,但同時(shí)也產(chǎn)生了這個(gè)警告。

要解決這個(gè)警告,你需要明確地告訴 NSKeyedUnarchiver 在反序列化數(shù)據(jù)前,你將要解碼的類。這樣可以確保解碼的數(shù)據(jù)是你期望的類型。這是一個(gè)可能的解決方案的例子:

NSData *data = //... your archived data
NSSet *allowedClasses = [NSSet setWithObjects:[NSString class], [MyClass class], nil];
NSError *error = nil;
MyClass *myClass = [NSKeyedUnarchiver unarchivedObjectOfClasses:allowedClasses fromData:data error:&error];

你需要為你希望解碼的每個(gè)類都創(chuàng)建一個(gè)NSSet,并在 unarchivedObjectOfClasses:fromData:error: 方法中使用它。在這個(gè)例子中,我們?cè)试S解碼 NSString 和 LHUserInfo 類型的對(duì)象。

注意,你的App可能在試圖反序列化 LHUserInfo 類型的對(duì)象時(shí),同時(shí)也可能在反序列化 NSString 對(duì)象,所以你需要在允許解碼的類集合中包含這兩種類型的類。

這種策略的目的是為了提高安全性,尤其是在處理可能來(lái)自不安全來(lái)源的數(shù)據(jù)時(shí)。為了確保App的安全性,應(yīng)該盡可能地限制可以解碼的類型。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容