Ios 返回UITableView的函数会导致EXC\u访问错误

Ios 返回UITableView的函数会导致EXC\u访问错误,ios,swift,xcode,uitableview,cocoapods,Ios,Swift,Xcode,Uitableview,Cocoapods,我试图创建一个函数,从Cocoapod类返回UITableView。但是,当我调用该函数时,我得到: 线程1:EXC\U坏访问(代码=2,地址=0x7fff89c111b0) 在主ViewController中初始化表视图时不会发生这种情况 乙二醇 这是正确的 let tableView = laneScroller.makeTable() 然而,这是失败的 下面是我的Cocoapod类所做的: public class LaneScroller: NSObject { private

我试图创建一个函数,从Cocoapod类返回UITableView。但是,当我调用该函数时,我得到:

线程1:EXC\U坏访问(代码=2,地址=0x7fff89c111b0)

在主ViewController中初始化表视图时不会发生这种情况

乙二醇

这是正确的

let tableView = laneScroller.makeTable()
然而,这是失败的

下面是我的Cocoapod类所做的:

public class LaneScroller: NSObject {
    private var size: CGFloat
    public init(size: CGFloat) {
        self.size = size
    }

    public func makeView() -> UIView {
        return UIView(frame: CGRect(x: 0, y: 0, width: size, height: size))
    }

    public func makeTable() -> UITableView {
        let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
        tableView.delegate = self
        tableView.dataSource = self
        return tableView
    }
}

我在扩展中实现了委托和数据源方法


如您所见,我使用了类似的方法来获取UIView并将其添加到UIViewController的视图中,这非常有效。我在某个地方读到,这可能与弱分配和强分配有关。但不确定如何修复此问题。

您需要从函数体中删除这两行

tableView.delegate = self
tableView.dataSource = self

并将其添加到函数返回tableView实例的位置,因为您在UiViewController扩展中实现了tableView数据源和委托,并且Lanescroller不是从UiViewController继承的,或者我可以说它不是视图控制器。

您能给我们显示初始化Lanescroller的代码吗?让Lanescroller=Lanescroller(大小:100)@ChrisCan是否显示完整错误?请稍候,我将添加一个屏幕截图。Lanescroller不是UiTableViewDelegate/datasource。协议丢失。我已将这些扩展添加到laneScroller。
tableView.delegate = self
tableView.dataSource = self