在Objective-C中为CGPoint动态分配内存的方法

时间:2013-06-09 23:22:19

标签: objective-c

我是Objective-C的新手,我想在Objective-C中为CGPoint动态分配内存,就像C ++中的矢量模板一样。并能够更改数组中的值。我知道NSMtubleArray可以实现这一点,但是每次将CGPoint包装到NSValue然后将NSValue存储到NSMtubleArray中时,它是否会过于繁琐?我使用[NSMtubleArray replaceObjectWith:[NSValue vauleWithCGPoint:]]遇到运行时错误。

任何建议都将不胜感激!

1 个答案:

答案 0 :(得分:3)

如果你发现将盒子和unbox CGPoint整理成NSValue是乏味的,你需要随时直接访问CGPoint字段(否则它不值得,因为你没有获得任何与NSValue的方法相比valueWithCGPoint:的方法CGPointValue 1}}和@interface MyPoint : NSObject @property (nonatomic) CGFloat x; @property (nonatomic) CGFloat y; - (id)initWithCGPoint:(CGPoint)point; + (instancetype) pointWithCGPoint:(CGPoint)point; - (CGPoint) CGPoint; @end )您可以创建一个表示点的类,其中包含一些方法可以轻松地转换为CGPoint和从CGPoint转换。

这样的事情:

@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

实施:

{{1}}