我正在这样的类的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*h=self.mainHero;
NSInteger*m=self.map;
但是稍后在代码中我可以很容易地使用英雄类(更改位置等)但它无法使用self.map(数组中的可怕整数而不是0和1)...如何修复它?
答案 0 :(得分:0)
根据您的上一条评论,问题似乎是由于悬空引用:您创建了一个局部变量lvl1Map[]
,将其分配给self.map
,然后退出初始化程序。此时,lvl1Map[]
已消失,但map
指向内存中曾经存在的区域。
您可以通过声明lvl1Map
static:
NSInteger lvl1Map[]={...};
[self setMap:lvl1Map];