非常に速くスクロールするときに発生する傾向があるios 7を使用して、UICollectionView内で奇妙なクラッシュが発生します。同様の問題が Apple Developer Forms で報告されています: https://devforums.apple.com/message/901009#901009
誰かがこれを経験し、修正/回避策を見つけたのではないかと思いますか?
フロー レイアウトで構成された基本的な UICollection ビューを使用しています。ネットワーク経由でjsonデータから入力されています。データは定期的に変更されます。それが行われると、reloadData
メソッドが呼び出されます。ネットワーク コールバックの 1 つがバックグラウンド スレッドでコールバックしているのではないかと心配していたので、reload メソッドが常にメイン スレッドで呼び出されることを確認しました。これは間違いなくそうではありません。
NSZmobies をオンにすると、クラッシュが発生したときに次のログ メッセージが表示されます。
*** -[NSIndexPath section]: message sent to deallocated instance 0x218b74c0
また、Zombies トレース テンプレートを使用して Instruments にアタッチされたアプリを実行したところ、クラッシュにつながる一連の呼び出しの詳細を示す次のスタック トレースを取得できました。
すべての呼び出しは iOS フレームワーク レベルの呼び出しであり、アプリケーションの呼び出しではないことに注意してください。
0 libsystem_malloc.dylib malloc_zone_calloc
1 libsystem_malloc.dylib calloc
2 libobjc.A.dylib class_createInstance
3 libobjc.A.dylib +[NSObject allocWithZone:]
4 Foundation +[NSIndexPath indexPathWithIndexes:length:]
5 UIKit +[NSIndexPath(UITableView) indexPathForRow:inSection:]
6 UIKit -[UICollectionViewFlowLayout _layoutAttributesForItemsInRect:]
7 UIKit -[UICollectionViewFlowLayout layoutAttributesForElementsInRect:]
8 UIKit __45-[UICollectionViewData validateLayoutInRect:]_block_invoke
9 UIKit -[UICollectionViewData validateLayoutInRect:]
10 UIKit -[UICollectionView layoutSubviews]
11 UIKit -[UIView(CALayerDelegate) layoutSublayersOfLayer:]
12 QuartzCore -[CALayer layoutSublayers]
13 QuartzCore CA::Layer::layout_if_needed(CA::Transaction*)
14 QuartzCore CA::Layer::layout_and_display_if_needed(CA::Transaction*)
15 QuartzCore CA::Context::commit_transaction(CA::Transaction*)
16 QuartzCore CA::Transaction::commit()
17 QuartzCore CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*)
18 CoreFoundation __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__
19 CoreFoundation __CFRunLoopDoObservers
20 CoreFoundation CFRunLoopRunSpecific
21 CoreFoundation CFRunLoopRunInMode
22 GraphicsServices GSEventRunModal
23 UIKit UIApplicationMain
24 Mixlr main /Users/saman/Desktop/mixlr-iphone/Mixlr/main.m:14
25 libdyld.dylib start