2017-09-06 6 views
3

objective-c 프로젝트에 iOS 차트를 사용하고 싶습니다. UI는 코드로 작성되었으므로 차트보기의 nib 파일을 특별히 만들고 싶지 않습니다. 그러나, 간단한 초기화하기 또는 initWithFrame이 여기 나에게 iOS 차트 - 프로그래밍 방식으로 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

약한 대신 속성을 강하게 만듭니다. 또한 속성을 초기화하고 전체 코드를 게시하십시오. –

+0

그게 효과가! 약한 재산으로는 왜 작동하지 않는지 조금 설명해 주시겠습니까? IBOutlets는 일반적으로 weak로 표시됩니다. – jerry

+1

'weak'는 생성 된 즉시 즉시 풀어줍니다. 왜냐하면 다른 강력한 객체가 없기 때문입니다. – Tj3n

답변

1

나의 exprience에 따라 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 경고가 생성되었습니다.

그러므로 in-sort는 weak을 사용하지 마십시오. retain 개체를 할당해야합니다.

희망이 도움이 될 것입니다!