dav*_*ryn 2 c arrays objective-c
我想创建一个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
Run Code Online (Sandbox Code Playgroud)
我想创建一个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;
}
Run Code Online (Sandbox Code Playgroud)
但是我收到了一个错误
Expected method to write array element not found on object of type 'PointMass *'
Run Code Online (Sandbox Code Playgroud)
如果我想在C数组中存储指针,我是否需要告诉编译器更多关于我的PointMass对象?
我基本上试图在iPhone上玩一些粒子数学,而不需要经常从NSArray解包点,如果我不清楚我想在这里实现什么.
如果我以一种倒退的方式解决这个问题,我很乐意纠正 - 自从我写了香草C以来,我已经有一段时间了,而且我有点生疏了!
小智 5
自从我写了香草C以来已经有一段时间了
你应该仍然能够做出一个指针,TO-之间的区别T
和指针到指针-TO- T
(T
是PointMass
在这种情况下).你想存储一个数组PointMass *
,而不是一个数组PointMass
(你无论如何都做不到).所以改变声明pointMassList
为
PointMass **pointMassList;
Run Code Online (Sandbox Code Playgroud)
它会起作用.但是,如果您还在使用Objective-C,为什么不简单地将实例存储到NSArray
?
归档时间: |
|
查看次数: |
786 次 |
最近记录: |