gpt4 book ai didi

objective-c - 在 C 数组中存储一个 NSObject 指针数组

转载 作者:行者123 更新时间:2023-12-02 22:09:01 25 4
gpt4 key购买 nike

我想创建一个包含一些成员变量的 NSObject 子类:

@interface PointMass : NSObject
{
CGPoint mCurPosition;
CGPoint mLastPosition;
CGPoint mAcceleration;
}

-(id) initWithPosition:(CGPoint*) pos;


#import "PointMass.h"

@implementation PointMass

-(id) initWithPosition:(CGPoint*)pos
{
mCurPosition = *pos;
mLastPosition = *pos;
mAcceleration = ccp(0,0);
return self;
}

@end

我想创建一个 C 风格的数组来将它们保存在一个 cocos2d 类中:

// mNumPoint declared in interface, I've set it to 100
PointMass *pointMassList;
pointMassList = malloc(sizeof(PointMass*) * mNumPointMass);

for (int = 0; i < mNumPointMass; i++)
{
CGPoint point = ccp(100,100);
PointMass *p = [[PointMass alloc] initWithPosition: &point];
pointMassList[i] = p;
}

但是我得到一个错误

Expected method to write array element not found on object of type 'PointMass *'

如果我想在 C 数组中存储指向它的指针,是否需要告诉编译器更多关于我的 PointMass 对象的信息?

我基本上是在尝试在 iPhone 上玩一些粒子数学,如果不清楚我要在这里实现什么,则不需要不断地从 NSArray 中解压点。

如果我以倒退的方式解决这个问题,我很乐意得到纠正 - 我已经有一段时间没有写普通的 C 了,我有点生疏了!

最佳答案

it has been a while since I wrote vanilla C

您仍然应该能够区分指向T 的指针和指向T 的指针(T 在这种情况下是 PointMass)。您想要存储一个 PointMass * 数组,并且不是一个 PointMass 数组(无论如何您都做不到)。所以把pointMassList的声明改成

PointMass **pointMassList;

它会起作用的。但是,如果您无论如何都在使用 Objective-C,为什么不直接将实例存储到 NSArray 中呢?

关于objective-c - 在 C 数组中存储一个 NSObject 指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15667667/

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