gpt4 book ai didi

ios - UITableView 向释放的 UIViewController 发送消息时崩溃

转载 作者:可可西里 更新时间:2023-11-01 05:12:05 24 4
gpt4 key购买 nike

我一整天都在与以下堆栈跟踪作斗争。我无法重现该问题,但我知道它会发生在大量用户 (Crashlytics) 中。

Crashed: com.apple.main-thread
EXC_BAD_ACCESS KERN_INVALID_ADDRESS at 0x0000000000000010

Thread : Crashed: com.apple.main-thread
0 libobjc.A.dylib 0x0000000194187bd0 objc_msgSend + 16
1 UIKit 0x000000018860639c -[UITableView _createPreparedCellForGlobalRow:withIndexPath:willDisplay:] + 544
2 UIKit 0x00000001885fafc4 -[UITableView _updateVisibleCellsNow:isRecursive:] + 2360
3 UIKit 0x00000001883f0c60 -[UITableView layoutSubviews] + 172
4 UIKit 0x000000018830d874 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 572
5 QuartzCore 0x0000000187c65d58 -[CALayer layoutSublayers] + 168
6 QuartzCore 0x0000000187c60944 CA::Layer::layout_if_needed(CA::Transaction*) + 320
7 QuartzCore 0x0000000187c607e8 CA::Layer::layout_and_display_if_needed(CA::Transaction*) + 32
8 QuartzCore 0x0000000187c5ffe8 CA::Context::commit_transaction(CA::Transaction*) + 276
9 QuartzCore 0x0000000187c5fd6c CA::Transaction::commit() + 436
10 UIKit 0x0000000188304848 _afterCACommitHandler + 156
11 CoreFoundation 0x0000000183b46388 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 32
12 CoreFoundation 0x0000000183b43314 __CFRunLoopDoObservers + 360
13 CoreFoundation 0x0000000183b436f4 __CFRunLoopRun + 836

...

这发生在拥有 UITableView 的 UIViewController 中。 View Controller 也是 TableView 的数据源和委托(delegate)。

查看堆栈跟踪,我猜测 View Controller 将在某些动画或缓慢操作进行时被释放。在尝试了一切之后,我找不到会发生这种情况的配置。

对于为什么 VC 可以在其中一个 View 仍然处于动画状态时被释放,您有什么建议吗?

最佳答案

我注意到这次崩溃与从 UITableViewController 切换到 UIViewController + UITableView 同时发生。

据推测,UITableViewController 在释放时取消了 TableView 的委托(delegate)和数据源。新代码不是这种情况。

为了解决这个问题,我在 - (void)dealloc 中将它们设置为 nil:

- (void)dealloc {
_tableView.dataSource = nil;
_tableView.delegate = nil;
}

需要将它们设置为 nil 的原因是 both the UITableView's dataSource and delegate are unsafe_unretained references .

关于ios - UITableView 向释放的 UIViewController 发送消息时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26147424/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com