-5

我正在做这个项目,我试图让一个 4-4 的红色方块在屏幕上弹跳,但是每次我运行这段代码时,它都会给出一个线程错误,上面写着 Thread 1:signal SIGABRT 我对 Objective-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
4

2 回答 2

1

代码中一个明显的错误是您使用选择器设置计时器,event但您没有名为event. 相反,您有一个名为event:. 冒号使世界变得与众不同。

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

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

于 2013-06-29T23:07:57.807 回答
1

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

在此处输入图像描述

于 2013-06-29T23:27:45.927 回答