按下主页按钮时iOS应用程序崩溃(暂停应用程序时)

时间:2014-03-27 11:20:09

标签: ios iphone objective-c ios7 crash

应用程序正常,但无法暂停。每当我按下主页按钮时,应用程序就会崩溃并显示以下堆栈跟踪:

2014-03-27 12:00:31.413 ProjName[2598:60b] -[__NSCFDictionary animationForKey:]:
unrecognized selector sent to instance 0x17ee4cc0
2014-03-27 12:00:31.415 ProjName[2598:60b] *** Terminating app due to uncaught exception
'NSInvalidArgumentException', reason: '-[__NSCFDictionary animationForKey:]: 
unrecognized selector sent to instance 0x17ee4cc0'
*** First throw call stack:
(0x2fc9cfd3 0x3a77fccf 0x2fca0967 0x2fc9f253 0x2fbee7f8 0x324caf01 0x324b9d83 0x3250e7b9  0x2fc5f1f1 0x2fbd357f 0x305bda3d 0x3253bdcd 0x324bdca5 0x324bd871 0x32521cc9 0x34acbaed 0x34acb6d7 0x2fc67ab7 0x2fc67a53 0x2fc66227 0x2fbd0f4f 0x2fbd0d33 0x34aca663 0x3251c16d 0x10f759 0x3ac8cab7)
libc++abi.dylib: terminating with uncaught exception of type NSException

按下主屏幕按钮时,最终用户从不会注意到崩溃。但是,当应用程序应该恢复时,它会再次重新启动。没有显示错误消息,因此用户可能认为应用程序正常工作。这可能是什么问题?

编辑: 这是抛出异常的地方(EXC_BAD_ACCESS代码= 1),在main.m中的支持文件中:

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

EDIT2: 我现在已经找到了导致问题的原因,但我还在想为什么?如果我创建一个UIView并在drawRect中添加它,则会出现问题。

- (void)drawRect:(CGRect)rect {
    [self.layer setSublayers:nil];

    activityView = [[UIActivityIndicatorView alloc]     initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
    activityView.center=CGPointMake(200, 200);
    [activityView startAnimating];
    [self addSubview:activityView];
}

可以通过添加带有此drawRect的UIView来重现此错误。有人可以解释这种行为吗?

- (void)viewDidLoad
{
   totalMeter = [[UIViewTest alloc] initWithFrame:CGRectMake(0, 80, 320.0, 320.0)];
   [self.view addSubview:totalMeter];

}
- (void)viewDidAppear:(BOOL)animated
{
   [totalMeter setNeedsDisplay];
} 

2 个答案:

答案 0 :(得分:0)

[__NSCFDictionary animationForKey:]: unrecognized selector sent to instance

问题是,当你的应用程序进入后台时,你可以在类型字典的值上调用animationForKey方法,而不是实现该方法。

答案 1 :(得分:0)

如果您使用AFNetworking framework并包含UIActivityIndicatorView+AFNetworking.h,我认为这是一个指控。我甚至发生在我的工作中。

所以,如果你不使用UIActivityIndicatorView+AFNetworking.h,只需从你的项目中删除它,然后重建你的项目,一切都会好的。祝你。

这是github AFNetworking issue

中的问题