iOS图表 - 如何以编程方式初始化LineChartView

时间:2017-09-06 19:19:46

标签: ios objective-c ios-charts

我想在我的objective-c项目中使用iOS图表。由于UI完全用代码编写,我不想专门为图表视图创建一个nib文件。但是,创建 LineChartView 的简单 init initWithFrame 给了我 nil

//Declare chartView property in header
@property (nonatomic, weak) LineChartView* chartView;

//Call to init chart     
CGRect frame = CGRectMake(0, 0, CGRectGetWidth(self.view.bounds), 
CGRectGetHeight(self.view.bounds));
self.chartView = [[LineChartView alloc] initWithFrame: frame];

此处,在调用上述代码后,self.chartView为 nil

1 个答案:

答案 0 :(得分:1)

根据我的经验,您需要删除Weak属性只有nonatomic才能在使用Init方法分配对象时起作用。

@property (nonatomic, weak) LineChartView *lineChart;

这个应该替换为

@property (nonatomic) LineChartView *lineChart;

好像你创建了弱属性,它将在分配后释放。

当你犯这种错误时XCode会发出如下警告:

  

警告:将保留对象分配给弱属性;对象将是   分配后发布[-Warc-unsafe-retained-assign]       self.lineChart = [[LineChartView alloc] initWithFrame:CGRectMake(0,0,320,320)];                      ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~ 1   发出警告。

因此,当你在其中分配任何weak对象时,in-sort永远不会使用retain

希望这会有所帮助!