0

「、」で区切られた緯度と経度の文字列があります。

 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: * error for object 0x714c490: 解放されたオブジェクトのチェックサムが正しくありません - オブジェクトは解放後に変更された可能性があります。

4

2 に答える 2

0

配列内の値を使用して、次の
ように objectAtIndex を使用できるような値を取得し
[arrayName objectAtIndex:index];

たいと思います。本当に NSMutableArray をパラメーターとして指定したい場合は、次のようにする必要があります。
functionName: (NSMutableArray *) arrayName

于 2013-02-11T21:40:59.273 に答える
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);
}
于 2013-02-11T22:46:10.607 に答える