[英]NSMutableOrderedSet lastObject NSRangeException crash
平均而言,我有一個 NSMutableOrderedSet,其中每秒添加一個新的自定義對象。 每次新數據到達時,都會更新對lastObject的引用。 同樣在方法結束時,如果 NSMutableOrderedSet 計數大於 300,則從 NSMutableOrderedSet 中刪除第一個對象。 全部在@synchronized塊中完成。
在 iOS13 中,我們在 50.000 個會話中遇到 NSRangeException 崩潰。 崩潰日志:
Fatal Exception: NSRangeException
*** -[__NSArrayM objectAtIndex:]: index 300 beyond bounds [0 .. 299]
0 CoreFoundation __exceptionPreprocess
1 libobjc.A.dylib objc_exception_throw
2 CoreFoundation -[__NSCFString characterAtIndex:].cold.1
3 CoreFoundation _CFDataInit
4 xxxxxx -[xxx lastObject:]
通過減少添加數據的時間間隔,我能夠在測試環境中創建崩潰。 崩潰恰好發生在這一行
MY-NSMutableOrderedSet lastObject
在返回數組中最后一個對象的簡單 iOS 方法中怎么會發生這種崩潰。
現在,我通過將 NSMutableOrderedSet 轉換為 NSMutableArray 來擺脫崩潰。 我對其進行了測試,通過將其轉換為 NSMutableOrderedSet,我可以輕松地在我的測試環境中使其崩潰。 當類型為 NSMutableArray 時,它不會崩潰。 我認為這是與 iOS 13 相關的錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.