我想在我的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 。
答案 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
。
希望这会有所帮助!