我的地图对象有一组坐标。它并不总是具有相同数量的坐标。在java中,我只是将对象声明为Double[] xpoints
并在实例化这样的地图时设置它的大小xpoints = new double[npoints]
:
我怎么能用objective-c做到这一点?
我试过这样做:@property(nonatomic) double * xpoints;
但是当我用 NSLog 打印它时,它的所有值都变成了 0。
地图的初始化:
-(id)initWithXpoints:(double[]) xpointss Ypoints:(double[]) ypointss Npoints:(int)npointss
{
self = [super init];
if (self)
{
self.xpoints = xpointss;
self.ypoints = ypointss;
self.npoints = npointss;
}
return self;
}
不过有些奇怪的事情发生了。当我从创建地图的对象打印 xpoints[0] 时,这些值变为零。我第一次打印它就可以了。第二次它只打印零。
我认为这是因为发送到 init 的 xpointss 已从内存中删除。如果它是一个指针,我如何“实例化” xpoints 属性?
有一个更好的方法吗?
补充说:我尝试像这样创建一个临时xpoints:
double tempxpoints[npointss];
double tempypoints[npointss];
for (int i = 0; i < npointss; i++)
{
tempxpoints[i] = xpointss[i];
tempypoints[i] = ypointss[i];
}
self.xpoints = tempxpoints;
self.ypoints = tempypoints;
但它仍然没有工作。
编辑:感谢所有答案。这最终成为我的最终初始化代码:
-(id)initWithXpoints:(double[]) xpointss Ypoints:(double[]) ypointss Npoints:(int)npointss
{
self = [super init];
if (self)
{
_xpoints = [[NSMutableArray alloc] init];
_ypoints = [[NSMutableArray alloc] init];
for (int i = 0; i < npointss; i++)
{
NSNumber *tempx = [NSNumber numberWithDouble:xpointss[i]];
NSNumber *tempy = [NSNumber numberWithDouble:ypointss[i]];
[_xpoints addObject:tempx];
[_ypoints addObject:tempy];
}
_npoints = npointss;
}
return self;
}