1

次のようなクラスの init メソッドで UIButton を初期化しています。

UIButton* upButton=[[UIButton alloc] initWithFrame:CGRectMake(2*stepX, 13*stepY,2*stepX,stepY)];
[upButton setTitle:@"UP" forState:UIControlStateNormal];
[upButton setBackgroundColor:[UIColor blueColor]];
[upButton addTarget:self action:@selector(pressedUp) forControlEvents:UIControlEventTouchUpInside];

pressUp メソッドでは、そのクラス (NSInteger* とクラスの hero*) の変数を使用する必要があります。だから私はやっている:

hero*h=self.mainHero;
NSInteger*m=self.map;

しかし、コードの後半では、hero クラス (位置の変更など) を簡単に操作できますが、self.map (配列内の 0 と 1 の代わりにひどい整数) では機能しません... どうすれば修正できますか?

4

1 に答える 1

0

最後のコメントから、問題はダングリング参照が原因であるように見えます: ローカル変数を作成し、lvl1Map[]それを に割り当てself.map、初期化子を終了します。この時点で、lvl1Map[]はなくなっていますが、mapはメモリ内のかつて存在していた領域を指しています。

lvl1Mapstaticを宣言することで、この問題を解決できます。

NSInteger lvl1Map[]={...};
[self setMap:lvl1Map];
于 2012-07-19T19:25:35.550 に答える