それが特定のインスタンスに固有のものではありません何かが本当にないなら、私はclass
プロパティ(またはクラスメソッド)を使用する場合があります:
@property (class, readonly) double pi;
そして私問題の値を返すカスタムゲッターを実装する:
+ (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