gpt4 book ai didi

objective-c - Objective C 在类初始化时分配原始 c 数组实例变量

转载 作者:太空宇宙 更新时间:2023-11-03 23:33:32 31 4
gpt4 key购买 nike

我正在尝试编写一个绘制 OpenGL 多边形的 Objective C 类。我已经设法使用 NSMutableArray 来存储我的顶点坐标。然而,这似乎有点低效,因为每次绘制对象时,都需要遍历数组以将 NSMutableArray 转换为 ccVertex2F [] 数组。

我想要做的是将 ccVertex2F 数组作为实例变量。然后在初始化时将大小设置为点数。然而,这会引发错误,因为我的数组的大小始终为零。

我在 Java 编程方面经验丰富,但对 C 和内存管理完全陌生。到目前为止,这就是我所拥有的:

@interface PolygonNode : CCNode {
ccVertex2F * _glPoints ;
}

@property (nonatomic, readwrite) ccVertex2F * glPoints ;
@end

我对此的理解是我正在创建一个实例变量,它是一个指向 ccVertex2F 的指针。

在我的初始化方法中,我有以下内容:

    ccVertex2F sizedGlPoints [numberOfPoints * sizeof(ccVertex2F)];
_glPoints = &sizedGlPoints;

这样做的目的是让实例变量指向我新的正确大小的数组。但是,当我在此代码之后打印尺寸时,_glPoints 尺寸不会改变。

我想做的核心是在初始化类时能够选择数组的大小,这样我就不会浪费内存。

最佳答案

您可以使用 malloc 为数组分配内存:

ccVertext2F *newMemory = malloc(numberOfPoints * sizeof(ccVertex2F));
if (newMemory == NULL) {
// Handle error
}
_glPoints = newMemory;

请记住在完成后释放它(在 -dealloc 中或再次分配之前):

free(_glPoints);

关于objective-c - Objective C 在类初始化时分配原始 c 数组实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9912928/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com