将NSMutableArray转换为float数组

时间:2013-02-11 21:26:24

标签: arrays nsmutablearray parameter-passing

我有一个字符串,其中lat和lon由“,”分隔:

 NSArray* coord = [newString componentsSeparatedByString:@","];

 NSMutableArray *lat= [[NSMutableArray alloc] init];
 NSMutableArray *lon = [[NSMutableArray alloc] init];

 for(int i=0;i<[coord count]-1;i=i+2)

    {


          [lat addObject:[coord objectAtIndex:i]];
          [lon addObject:[coord objectAtIndex:i+1]];

    }

我希望将它们与此功能一起使用:

 int pnpoly(int nvert, float *vertx, float *verty, float testx, float testy)
{
int i, j, c = 0;
for (i = 0, j = nvert-1; i < nvert; j = i++) {
    if ( ((verty[i]>testy) != (verty[j]>testy)) &&
        (testx < (vertx[j]-vertx[i]) * (testy-verty[i]) / (verty[j]-verty[i]) + vertx[i]) )
        c = !c;
}
return c;

}

因此NSMutableArray不起作用。所以我创建了这个:

 //Seperating the string with coordinates by ","
    NSArray* coord = [newString componentsSeparatedByString:@","];

    float *lat = malloc(sizeof(float) * ([coord count]/2));
    float *lon = malloc(sizeof(float) * ([coord count]/2));


    for(int i=0;i<[coord count]-1;i=i+2)

    {

        lat[i]= [[coord objectAtIndex:i] floatValue];
        lon[i]= [[coord objectAtIndex:i+1] floatValue];


    }
   free(lat);
    free(lon);

给了我一些错误,如:(5629,0xacc3da28)malloc: * 对象0x714c490错误:释放对象的错误校验和 - 对象可能在被释放后被修改。

2 个答案:

答案 0 :(得分:0)

我想你想要使用数组中的值 要获得这样的值,您可以使用objectAtIndex,如: [arrayName objectAtIndex:index];

如果你真的想给NSMutableArray作为参数,你应该这样做:
functionName: (NSMutableArray *) arrayName

答案 1 :(得分:0)

鉴于其他信息,我认为你想要这个。

考虑到你已经建立了NSMutableArray * lat和NSMutableArray * lon
其中lat和lon的值不是nil或null。

for(int i=0;i<lat.count;i++)
{
    pnpoly(lat.count, [lat objectAtIndex:i], [lon objectAtIndex:i], static, static);
}