线程1:在main.m文件中发出SIGABRT信号

时间:2013-09-08 06:40:40

标签: objective-c xcode sigabrt

我在Xcode中需要一些帮助。我收到错误线程1:SIGABRT,它指向main.m文件。我设置了异常断点,它仍然在main.m文件中停止。

#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>

#import "AppDelegate.h"

int main(int argc, char *argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}

这是我在main.m文件中的代码。有人可以帮我解决这个错误。

完整错误是:

2013-09-07 23:41:05.440 save the jewel 5[86090:c07] -[game pause:]: unrecognized selector sent to instance 0x845ece0
2013-09-07 23:41:09.460 save the jewel 5[86090:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[game pause:]: unrecognized selector sent to instance 0x845ece0'
*** First throw call stack:
(0x1693012 0x13a0e7e 0x171e4bd 0x1682bbc 0x168294e 0x13b4705 0x2e82c0 0x2e8258 0x3a9021 0x3a957f 0x3a86e8 0x317cef 0x317f02 0x2f5d4a 0x2e7698 0x26f5df9 0x26f5ad0 0x1608bf5 0x1608962 0x1639bb6 0x1638f44 0x1638e1b 0x26f47e3 0x26f4668 0x2e4ffc 0x23c2 0x22f5)
libc++abi.dylib: terminate called throwing an exception

在我的game.m文件中,我有:

-(void)pauseLayer:(CALayer*)layer{
    CFTimeInterval pausedTime = [layer convertTime:CACurrentMediaTime() fromLayer:nil];
    layer.speed = 0.0;
    layer.timeOffset = pausedTime;
}

-(void)resumeLayer:(CALayer*)layer{
    CFTimeInterval pausedTime = [layer timeOffset];
    layer.speed = 1.0;
    layer.timeOffset = 0.0;
    layer.beginTime = 0.0;
    CFTimeInterval timeSincePause = [layer convertTime:CACurrentMediaTime() fromLayer:nil] - pausedTime;
    layer.beginTime = timeSincePause;
}


- (IBAction)pause:(id)sender {
    [self pauseLayer:self.view.layer];

}

- (IBAction)resume:(id)sender {
    [self resumeLayer:self.view.layer];
}

在我的game.h文件中,我有:

- (IBAction)pause:(id)sender;
- (IBAction)resume:(id)sender;


-(void)pauseLayer:(CALayer*)layer;
-(void)resumeLayer:(CALayer*)layer;

我需要一些帮助。

1 个答案:

答案 0 :(得分:2)

-[game pause:]: unrecognized selector sent to instance 0x845ece0

这意味着你有一个game类的实例(顺便说一句,那个类应该是Game,而不是game,类是大写的)有些东西正在调用方法该课程pause:,但没有pause:方法。

鉴于该类被称为Game(已修复)并且暂停对游戏来说似乎是合理的事情,因此这不太可能是过度释放问题。 pause:似乎是您可能在界面构建器中连接了一个按钮。

您是否真的将pause:方法重命名为其他内容(pauseGame:?)而不是修复IB中的连接?


pause:实施是否在@implementation Game范围内?如果是这样,尝试清理项目并重建,因为可能存在依赖性问题。如果没有,那就是你的问题。

如果从干净的东西构建不起作用,那么缺少一些细节。由于从清洁构建不起作用,您将不得不发布更多细节。至少显示班级的声明。