CGPoint を NSValue にボックス化してボックス化解除するのが面倒で、いつでも CGPoint フィールドに直接アクセスする必要がある場合 (そうでない場合は、NSValue
のメソッドvalueWithCGPoint:
と比較して何も得られないため、価値がありませんCGPointValue
) ポイントを表すクラスを作成できます。 CGPoint との間で簡単に変換するいくつかの方法があります。
このようなもの:
@interface MyPoint : NSObject
@property (nonatomic) CGFloat x;
@property (nonatomic) CGFloat y;
- (id)initWithCGPoint:(CGPoint)point;
+ (instancetype) pointWithCGPoint:(CGPoint)point;
- (CGPoint) CGPoint;
@end
そして実装:
@implementation MyPoint
- (id)initWithCGPoint:(CGPoint)point
{
self = [super init];
if (self)
{
_x = point.x;
_y = point.y;
}
return self;
}
+ (instancetype) pointWithCGPoint:(CGPoint)point
{
return [[self alloc] initWithCGPoint:point];
}
- (CGPoint) CGPoint
{
return CGPointMake(_x, _y);
}
@end