这个Objective-c错误是什么意思和/或我如何修复它

时间:2013-06-29 22:26:25

标签: objective-c

我在这个项目上工作,我试图让4-4红色正方形在屏幕上反弹但每次运行此代码时都会出现一个线程错误     线程1:信号SIGABRT 我是一个相当新的目标-c任何人都可以帮助我做我想做的事情吗?这是我的代码

#import <UIKit/UIKit.h>

@class home;

@interface ViewController : UIViewController{
    ViewController* home;
    CGFloat rhx;
    CGFloat rhy;
    CGFloat red_direction_x;
    CGFloat red_direction_y;
}

@property CGFloat rhx;
@property CGFloat rhy;
@property CGFloat red_direction_x;
@property CGFloat red_direction_y;
@property ViewController* home;

@end

#import "ViewController.h"

@implementation ViewController

@synthesize rhx,rhy, red_direction_x, red_direction_y, home;

-(void)event:(NSTimer*)timername{
    UIView* redhead = [[UIView alloc]initWithFrame:CGRectMake(rhx, rhy, 4, 4)];
    redhead.backgroundColor = [UIColor redColor];
    [self.view addSubview:redhead];
    if (rhx >= self.view.bounds.size.width) {
        red_direction_x = -4;
    } else if (rhx <= 0) {
        red_direction_x = 4;
    }

    if (rhy <= 0) {
        red_direction_y = 4;
    } else if (rhy >= self.view.bounds.size.height) {
        red_direction_y = -4;
    }

    rhx += red_direction_x;
    rhy += red_direction_y;
}

- (void)viewDidLoad {
    self.home = [[ViewController alloc] init];
    red_direction_x = 4;
    red_direction_y = -4;
    rhx = 4;
    rhy = 4;

    [super viewDidLoad];

    [NSTimer scheduledTimerWithTimeInterval:0.1
                                 target:self
                                 selector:@selector(event)
                                 userInfo:nil
                                 repeats:YES];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}

@end

2 个答案:

答案 0 :(得分:1)

代码中的一个明显错误是您使用event选择器设置计时器,但您没有名为event的方法。相反,您有一个名为event:的方法。结肠在世界上有所不同。

更改您的计时器,以便选择器参数传递@selector(event:)

作为旁注,您的event:方法会不断添加新的子视图。我不知道你的目标是什么,但你可能只想移动现有的一个视图。

答案 1 :(得分:1)

在Xcode中,转到Breakpoint Navigator,然后添加All Exceptions。它将在您的代码中找到异常的断点。

enter image description here