Ios EXC_BAD_访问代码=1到main.m中的EXC_断点

Ios EXC_BAD_访问代码=1到main.m中的EXC_断点,ios,debugging,Ios,Debugging,我一直在网上(主要是这个网站)搜索这个问题的答案。我发现了一些相关的问题,这些问题对我都不起作用,或者他们自己都没有得到回答。 我正在写一个简单的乒乓球程序,现在我有一个主加载屏幕和一个按钮,带你到游戏屏幕。 游戏屏幕上有一个按钮,用于使用NSTimer启动球移动 GameComputerVSPlayer.h #import <UIKit/UIKit.h> int x; int y; @interface GameComputerVSPlayer : UIViewControl

我一直在网上(主要是这个网站)搜索这个问题的答案。我发现了一些相关的问题,这些问题对我都不起作用,或者他们自己都没有得到回答。 我正在写一个简单的乒乓球程序,现在我有一个主加载屏幕和一个按钮,带你到游戏屏幕。 游戏屏幕上有一个按钮,用于使用NSTimer启动球移动

GameComputerVSPlayer.h

#import <UIKit/UIKit.h>


int x;
int y;

@interface GameComputerVSPlayer : UIViewController {

IBOutlet UIImageView *backcolor;
IBOutlet UIImageView *ball;
IBOutlet UIImageView *computerPaddleVert;
IBOutlet UIImageView *computerPaddle;
IBOutlet UIImageView *playerPaddleVert;
IBOutlet UIImageView *playerPaddle;
IBOutlet UIImageView *cornerTL;
IBOutlet UIImageView *cornerTR;
IBOutlet UIImageView *cornerBL;
IBOutlet UIImageView *cornerBR;

IBOutlet UIButton *startButton;


NSTimer *timer;


}

@property (nonatomic, retain) UIImageView *ball;
@property (nonatomic, retain) UIImageView *computerPaddleVert;
@property (nonatomic, retain) UIImageView *computerPaddle;
@property (nonatomic, retain) UIImageView *playerPaddleVert;
@property (nonatomic, retain) UIImageView *playerPaddle;


-(IBAction)nextPoint:(id)sender;
-(void)ballMovement;



@end
我也尝试过使用NSZombie,但这并没有让我看到任何东西。提前感谢您的工作

编辑:我对标题和问题不是很清楚,很抱歉。这是我遗漏的另一条信息:

最初我收到EXC_BAD_ACCESS code=1错误,然后我启用了NSZombie,它变成了EXC_断点

我摆弄了一下有关按钮的代码,结果没有找到解决办法。我使用IB断开按钮(接收操作)并运行它。我可以去看按钮,但不能点击它(这并不奇怪)

此外,这是我的第一个构建,不涉及任何教程,所以如果我让这变得困难,很抱歉

不确定这些额外信息是否有用。。但再次感谢大家^^

编辑:编辑: 我确实启用了ARC,这是到目前为止我与遵循教程()时唯一的不同之处。在此之前,我尝试过不启用ARC,但在更改视图时遇到了类似的错误。因此,我将尝试打开教程项目,从中获取代码,并将其移动到新项目中,然后进行调整。我会让你们都知道结果的。

我想

-(void)ballMovement: (NSTimer*) timer {
    ball.center = CGPointMake(ball.center.x + x, ball.center.y + y);
}

注意:在
球移动之后:


将帮助您。

我不确定这是否是您的问题,但此方法是iAction,可能连接到按钮。每次触摸它时,都会初始化一个新的NSTimer。将NSTimer保留在强属性中,并且仅当它不是nil时才创建一个:

if (!self.timer) {
   self.timer = [NSTimer scheduledTimerWithTimeInterval:0.01 
   target:self 
   selector:@selector(ballMovement)
   userInfo:nil
   repeats:YES]; 
}

您是否每次都初始化一个新的计时器而不使前一个计时器失效。你有要调试的示例项目吗?我不这么认为,我只创建了一个计时器(我知道)。这是我第一次使用它。我会先尝试使用答案,然后再报告。再次感谢!当计时器试图向内存中不再存在的对象发送消息时,我遇到了类似的错误。检查GameComputerVSPlayer是否在内存中的某个位置(不仅仅是它的视图)。这听起来是一个很好的解决方案,我读过类似的评论。我尝试使用NSZombie,但没有收到任何警告。您能告诉我一种检查方法吗?我只是尝试用这些代码替换(简单地注释掉)原始代码,它也会产生另一个EXC_断点错误。感谢您仍然尝试><我会在原始帖子中快速添加一些信息,可能我错过了一个重要的部分。使用
scheduledTimerWithTimeInterval
添加参数不是强制性的。感谢您回答这个问题,但我只是尝试在中添加一些信息,但我无法使其工作。我将再次编辑原始帖子(请查找帖子底部的编辑:编辑:^.^)
timer = [NSTimer scheduledTimerWithTimeInterval:0.01   target:self 
selector:@selector(ballMovement:)  userInfo:nil repeats:YES];
if (!self.timer) {
   self.timer = [NSTimer scheduledTimerWithTimeInterval:0.01 
   target:self 
   selector:@selector(ballMovement)
   userInfo:nil
   repeats:YES]; 
}