2017-09-06 55 views
3

私のobjective-cプロジェクトにiOSチャートを使用したいと思います。 UIはコードで完全に記述されているので、チャートビュー用のnibファイルを特に作成したくありません。しかし、簡単なのinitまたはinitWithFrameは私にゼロiOS Charts - プログラムでLineChartViewを初期化する方法

//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]; 

を与えているLineChartViewを作成するにはここで、self.chartViewは上記のコードを呼び出した後ゼロです。

+1

プロパティをweakではなくstrongとして設定します。また、プロパティを初期化して、完全なコードを投稿します。 –

+0

それはうまくいった!それが弱い財産ではうまくいかなかった理由について少し説明できますか? IBアウトレットは、通常、弱いとマークされます。 – jerry

+1

'weak'は生成された直後にそれを解放します。それ以外の強いオブジェクトは残っていないからです – Tj3n

答えて

1

私の経験では、Weakプロパティのみを削除する必要があります。nonatomicは、Initメソッドでオブジェクトを割り当てている間に機能します。あなたはそれがその割り当て後にリリースする予定弱いプロパティを作成しているかのよう

@property (nonatomic, weak) LineChartView *lineChart; 

この1つは

@property (nonatomic) LineChartView *lineChart; 

に置き換える必要があります。また

あなたは間違いXCodeのこのタイプは、以下のような警告スロー行いながら:

警告:弱い性質を保持し、オブジェクトを割り当てます。オブジェクトは 割り当て後に解放されます[-Warc-unsafe-retained-assign] self.lineChart = [[LineChartView alloc] initWithFrame:CGRectMake(0、0、320、320)]; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 〜警告が生成されました。

従って、並べ替えのweakは、retainオブジェクトを割り当てている間は使用しないでください。

願っています。

関連する問題