처음에는 CGPoint 속성을 특정 지점 (화면 중간)으로 설정하고 싶습니다. 이후에 다른 방법으로이 속성을 변경할 수 있습니다. 내 생각은 getter에서 비어있는 경우 초기화하는 것이었지만 unary 표현식에 잘못된 인수 유형 'struct CGPoint'가 표시됩니다. 나는 또한 property == nil 또는 0이지만 기쁨은 사용하지 않았다.CGPoint가 초기화되었는지 어떻게 확인합니까?
의견이 있으십니까?
-(CGPoint)graphOrigin
{
// initialise to centre of screen if has not been set
if(!_graphOrigin) // this expression is causing the problem
{
CGPoint origin = CGPointMake(self.bounds.origin.x + self.bounds.size.width/2, self.bounds.origin.y + self.bounds.size.height/2);
_graphOrigin = origin;
}
return _graphOrigin;
}
**이 답변은 ** {0.0, 0.0} **이 실제로 존재하고 유효한 좌표이기 때문에 훨씬 더 마음에 들었습니다. 이를 널 포인트로 사용하면 프로그램 논리가 손상 될 수 있습니다. – Stas
CGPoint를 -1로 설정하면 -1은 다른 제안보다 나에게 덜 익숙해 보입니다. 별도의 부울 변수를 추가하는 것은 Single Point of Truth 위반처럼 보입니다. 변수 상태가 변경 될 때마다 업데이트되지 않으면 잘못된 결과가 나타납니다. – arlomedia
아마도 끔찍한 프로그래밍이지만, 필사적이라면 {NAN, NAN}을 좌표로 CGPoint에 전달할 수 있습니다. – Tommyixi