私には2つのObjective-Cクラス、たとえばParentLayerとChildLayerがあります。子インスタンスで、親インスタンスのC配列にアクセスしたいと思います。だから私は私のcocos2dコードにこのようなものを持っています:
#define kNumOfElements 10
@implementation ParentLayer{
int array[kNumOfElements];
}
-(id)init{
//...
for(int i=0;i<kNumOfElements;i++){
array[i] = i;
}
[self addChild:childLayer];
[childLayer initializeValues];
//...
}
-(int *)getArray{
return array;
}
@end
//meanwhile in my child layer...
//...
-(void)initializeValues{
int *arr = [(ParentLayer *)[self parent] getArray];
//NSLog(@"%d",arr[0]); <------- this gives you bad exec access point, and looks like it's 0x00 for memory address
}
//...
- これを行うための適切な方法は何ですか?
- 多分私はCアレイの背後にある正しいメモリ管理を理解していません。私は、C配列を割り当てる必要がなく、スタック上で値で渡すことができるという印象を受けましたか?
- また、私の親インスタンスはまだ存在するべきではありませんか?親のivarとしてC配列を配置すれば、破壊されるべきではないと思いました
どんな助けでも大歓迎です。ありがとう!