当ViewController取消时,UITableView / UIScrollView委托不会设置为nil

时间:2015-07-31 16:18:31

标签: ios swift uitableview uiscrollview automatic-ref-counting

我正在使用Swift 1.2

我有一个UIViewController,它是UITableView的委托。当我从一个NavigationController中弹出这个VC时,UITableView内的UIScrollView尝试在我的VC被释放后调用它并导致EXC_BAD_ACCESS崩溃。

为什么呢? ARC不应该对此进行排序吗?

为了解决这个问题,我必须写一下:

deinit {
    self.tableView.delegate = nil
}

烦。我做了些蠢事吗?

代表被挂在一个故事板中,这并不奇怪。事实上,无法想到任何有关我的设置的异常。

UITableView委托声明:

// Swift
unowned(unsafe) var delegate: UITableViewDelegate?

// Obj-C
@property(nonatomic, assign) id< UITableViewDelegate > delegate




要添加到Alex的正确答案,这在iOS 9中显然是修复的:

https://twitter.com/zwaldowski/status/627158943035457536 https://twitter.com/steipete/status/608387828221898754

1 个答案:

答案 0 :(得分:4)

并非所有Apple的框架都在内部使用ARC。您所看到的可能是UIScollView / UITableView仍在使用手动内存管理的结果。