簡體   English   中英

NSMutableOrderedSet lastObject NSRangeException 崩潰

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM