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];

在pressedUp 方法中,我需要使用该类中的变量(NSInteger* 和我的类 hero*)。所以我在做:

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

但后来在代码中,我可以轻松地使用 hero 类(更改位置等),但它无法使用 self.map(数组中的可怕整数而不是 0 和 1)......如何解决它?

4

1 回答 1

0

从您最后的评论看来,问题是由于一个悬空引用:您创建一个局部变量lvl1Map[],将其分配给self.map,然后退出初始化程序。此时,lvl1Map[]已经消失了,但map是指向内存中它曾经所在的区域。

lvl1Map您可以通过声明静态来解决此问题:

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