如果您发现将 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