我想创建一个包含几个成员变量的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以来,我已经有一段时间了,而且我有点生气了!
答案 0 :(得分:5)
自从我写了香草C以来已经有一段时间
了
你仍然可以区分指针指向T
和指向指针指针 - T
(T
为PointMass
在这种情况下)。您希望存储PointMass *
数组,不数组PointMass
(您无论如何也无法做到)。因此,将pointMassList
的声明更改为
PointMass **pointMassList;
它会起作用。但是,如果您仍在使用Objective-C,为什么不简单地将实例存储到NSArray
?