У меня есть подкласс UITableViewController, который вызывает [self.tableView reloadData]
из основной очереди всякий раз, когда ему нужно очистить вспомогательные представления из всех его ячеек. Проблема в том, что я получаю этот журнал сбоев, указывающий, что numberOfRowsInSection: было отправлено не тому объекту, когда я перезагружаю tableView. Я получаю сообщение: -[UIProxyObject tableView:numberOfRowsInSection:]: unrecognized selector sent to instance
и вот журнал сбоя:
Fatal Exception: NSInvalidArgumentException
0 CoreFoundation 0x23682a98c __exceptionPreprocess
1 libobjc.A.dylib 0x235a039f8 objc_exception_throw
2 CoreFoundation 0x2367471c8 -[NSOrderedSet initWithSet:copyItems:]
3 CoreFoundation 0x2368301d4 ___forwarding___
4 CoreFoundation 0x236831e6c _CF_forwarding_prep_0
5 UIKitCore 0x2633600ec -[UITableView _numberOfRowsInSection:]
6 UIKitCore 0x2633702d4 -[UISectionRowData refreshWithSection:tableView:tableViewRowData:]
7 UIKitCore 0x2633742e8 -[UITableViewRowData numberOfRows]
8 UIKitCore 0x263331ee8 -[UITableView noteNumberOfRowsChanged]
9 UIKitCore 0x2633315dc -[UITableView reloadData]
10 Lob 0x1028afcfc __49-[LBSiteListTableViewController clearLoadingCells]_block_invoke + 160 (LBSiteListTableViewController.m:160)
11 libdispatch.dylib 0x236268a38 _dispatch_call_block_and_release
12 libdispatch.dylib 0x2362697d4 _dispatch_client_callout
13 libdispatch.dylib 0x236217008 _dispatch_main_queue_callback_4CF$VARIANT$mp
14 CoreFoundation 0x2367bc32c __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__
15 CoreFoundation 0x2367b7264 __CFRunLoopRun
16 CoreFoundation 0x2367b67c0 CFRunLoopRunSpecific
17 GraphicsServices 0x2389b779c GSEventRunModal
18 UIKitCore 0x263135c38 UIApplicationMain
19 Lob 0x102856f30 main + 14 (main.m:14)
20 libdyld.dylib 0x23627a8e0 start
Это код, который я запускаю в контроллере представления таблицы:
- (void) clearLoadingCells {
dispatch_async(dispatch_get_main_queue(), ^{
[[LBAppDelegate tabBarController] clearLoading];
[self.tableView reloadData];
});
}
и в моем делегате я веду список загружаемых URL-адресов (только строки и логическое значение):
- (void) clearLoading {
[busyList removeAllObjects];
}
К сожалению, я не могу воспроизвести этот сбой для себя, я вижу только журналы вмоя консоль Firebase для Crashlytics.