应用程序正常,但无法暂停。每当我按下主页按钮时,应用程序就会崩溃并显示以下堆栈跟踪:
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];
}
答案 0 :(得分:0)
[__NSCFDictionary animationForKey:]: unrecognized selector sent to instance
问题是,当你的应用程序进入后台时,你可以在类型字典的值上调用animationForKey
方法,而不是实现该方法。
答案 1 :(得分:0)
如果您使用AFNetworking framework
并包含UIActivityIndicatorView+AFNetworking.h
,我认为这是一个指控。我甚至发生在我的工作中。
所以,如果你不使用UIActivityIndicatorView+AFNetworking.h
,只需从你的项目中删除它,然后重建你的项目,一切都会好的。祝你。
这是github AFNetworking issue
中的问题