我是Objective-C的新手,我想在Objective-C中为CGPoint动态分配内存,就像C ++中的矢量模板一样。并能够更改数组中的值。我知道NSMtubleArray可以实现这一点,但是每次将CGPoint包装到NSValue然后将NSValue存储到NSMtubleArray中时,它是否会过于繁琐?我使用[NSMtubleArray replaceObjectWith:[NSValue vauleWithCGPoint:]]遇到运行时错误。
任何建议都将不胜感激!
答案 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}}