는 특정 인스턴스에 고유하지 않습니다 뭔가 정말 아니라면, 나는 class
특성 (또는 클래스 메소드)를 사용할 수 있습니다
@property (class, readonly) double pi;
그리고 나서 문제의 값을 반환하는 사용자 정의 getter를 구현합니다.
+ (double)pi {
return M_PI;
}
이 한 번만 계산 그래서 VED 복잡한 계산, 당신은 dispatch_once
패턴을 사용할 수 있습니다
+ (double)pi {
static dispatch_once_t once;
static double _pi = 0;
dispatch_once(&once, ^{
// an unnecessary complicated calculation of pi, just to illustrate we'll do this only once
int k = 1;
double previous = 0;
BOOL sign = TRUE;
do {
previous = _pi;
_pi = previous + 4.0 * (sign ? 1.0 : -1.0)/k;
k += 2;
sign = !sign;
} while (fabs(_pi - previous) > 0.0001);
});
return _pi;
}
을 그리고 당신이 pi
특성 참조 할 수 있습니다 :
- (float)area {
return self.radius * self.radius * [Circle pi];
}
- (float)perimeter {
return self.radius * [Circle pi] * 2.0;
}
을
출처
2017-01-07 09:57:34
Rob