Хранение указателей на структуру в массиве? iPhone - PullRequest
1 голос
/ 15 декабря 2011

В моем приложении приведен код, который выделяет память для объекта struct. Этот метод вызывается в коде несколько раз, каждый раз при неправильном использовании памяти для нового объекта Vector3D.

То, что я хочу сделать, это захватить указатель на неправильный объект ShapeClass (структура C), чтобы впоследствии я мог освободить каждый объект в моем методе dealloc.

Может кто-нибудь посоветовать мне, как я могу добавить указатель на массив?

Спасибо.

vectorCount = [floatArray.array count] / 3;
        ShapeClass *vectorArray = malloc(sizeof(Vector3D) * vectorCount);
        for (int i=0; i<vectorCount; i++) {
            vectorArray[i].x = [[floatArray.array objectAtIndex:(i*3)] floatValue];
            vectorArray[i].y = [[floatArray.array objectAtIndex:(i*3)+1] floatValue];
            vectorArray[i].z = [[floatArray.array objectAtIndex:(i*3)+2] floatValue];
        }
        return vectorArray;
// I WANT TO INSERT SOMETHING HERE TO CAPTURE THE POINTER TO vectorArray - E.G ADD IT TO AN ARRAY ?
    }
}
return NULL;
}

1 Ответ

1 голос
/ 15 декабря 2011

Используйте [NSValue valueWithPointer:], чтобы сохранить его в классах контейнера.

NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
SomeObject *object = [[SomeObject alloc] init];

//Store the pointer to object
[dictionary setValue:[NSValue valueWithPointer:object] forKey:@"object"];
...