我有一种情况似乎核心情节正在丢弃CPTPlotDataSource对象,除非有另一个对象的引用。症状是,如果向绘图中添加六个“痕迹”,我将只看到添加的最后一个迹线,除非在其他地方有其他迹线的引用 (实现CPTPlotDataSource协议的对象)。如果每个FreqResponseDataSource对象都有另一个外部引用,则该图可以完美地工作。这是添加跟踪的代码:
func addTrace(dataSource: FreqResponseDataSource,
lineColor: CPTColor = CPTColor.black(),
title: String? = nil) {
let plot = CPTScatterPlot(frame: CGRect.zero)
plot.dataSource = dataSource
plot.title = title
let ls1 = CPTMutableLineStyle(style: plot.dataLineStyle)
ls1.lineColor = lineColor
ls1.lineWidth = 2.0
plot.dataLineStyle = ls1
graph.add(plot, to: graph.defaultPlotSpace)
graph.reloadData()
}
答案 0 :(得分:0)
Core Plot图表包含对其数据源的弱引用。这是整个Apple框架中看到的数据源模式的标准部分,用于防止保留周期。数据源通常在控制器对象中实现,该控制器对象由系统自动保留。如果你想使用另一个对象作为数据源,你必须在某处保持对它的持久引用。