iPhone应用程序无法在iPad上运行
我仅在iPad上运行仅iPhone应用程序时遇到问题。崩溃日志中的错误是iPhone应用程序无法在iPad上运行
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_PROTECTION_FAILURE at 0x00ac3ff8
Triggered by Thread: 0
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 libsystem_malloc.dylib 0x38cccdd4 allocate_pages + 352
1 libsystem_malloc.dylib 0x38cccace large_malloc + 70
2 libsystem_malloc.dylib 0x38cc83ee szone_malloc_should_clear + 1362
3 libsystem_malloc.dylib 0x38cc7e68 malloc_zone_malloc + 88
4 CoreFoundation 0x2aa24ea2 __CFStringChangeSizeMultiple + 866
5 CoreFoundation 0x2a983554 CFStringCreateMutableCopy + 408
6 CoreFoundation 0x2a99abba -[__NSCFString mutableCopyWithZone:] + 22
7 MyApp 0x006a274c 0xa3000 + 6289228
8 MyApp 0x006a2a7e 0xa3000 + 6290046
9 MyApp 0x006a2800 0xa3000 + 6289408
10 MyApp 0x006a2a7e 0xa3000 + 6290046
11 MyApp 0x006a2800 0xa3000 + 6289408
12 MyApp 0x006a2a7e 0xa3000 + 6290046
13 MyApp 0x006a2800 0xa3000 + 6289408
14 MyApp 0x006a2a7e 0xa3000 + 6290046
15 MyApp 0x006a2800 0xa3000 + 6289408
16 MyApp 0x006a2a7e 0xa3000 + 6290046
17 MyApp 0x006a2800 0xa3000 + 6289408
18 MyApp 0x006a2a7e 0xa3000 + 6290046
19 MyApp 0x006a2800 0xa3000 + 6289408
20 MyApp 0x006a2a7e 0xa3000 + 6290046
21 MyApp 0x006a2800 0xa3000 + 6289408
22 MyApp 0x006a2a7e 0xa3000 + 6290046
23 MyApp 0x006a2800 0xa3000 + 6289408
24 MyApp 0x006a2a7e 0xa3000 + 6290046
在XCode中,由'[UIImage imageNamed]'导致的崩溃原因。这让我困惑。我不知道如何调试和修正这种错误
UPDATE:
在这行代码断点停止
- (UIButton *)customBackButton
{
UIImage *buttonImage = [UIImage imageNamed:@"actionbar_back_nor.png"];
UIImage *buttonImagePressed = [UIImage imageNamed:@"actionbar_back_pre.png"];
UIButton *aButton = [UIButton buttonWithType:UIButtonTypeCustom];
[aButton setImage:buttonImage forState:UIControlStateNormal];
[aButton setImage:buttonImagePressed forState:UIControlStateHighlighted];
aButton.frame = CGRectMake(0.0,0.0,44,44);
UIEdgeInsets insets;
if (IOS_VERSION_7_OR_BETTER) {
insets = UIEdgeInsetsMake(11, 0, 11, 22);
}else{
insets = UIEdgeInsetsMake(11, 11, 11, 11);
}
aButton.imageEdgeInsets = insets;
[aButton addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside];
}
我改变了 '[UIImage的imageNamed:]' 到“[UIImage的imageWithContentsOfFile:]'和东西运行正常。为什么'[UIImage imageNamed:]'会导致这个错误?
问题是您发送消息到UIImage
(调用静态函数)与无效的参数。当然。因此[UIImage imageNamed:]
预计NSString
参数,但会出错。
所以请发布您的代码。
更新
既然你说你编译你的应用程序仅用于iPhone和iPad上运行它,我认为这个问题是在iPad上的图像查找。不幸的是,我不能深入,但根据https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/LoadingResources/ImageSoundResources/ImageSoundResources.html的文档,我们知道iPad首先会查找iPad特定的资源。所以我不确定,但似乎[UIImage imageNamed:]
在这个地方混淆了某处。您可以尝试将您的actionbar_back_nor.png
和actionbar_back_pre.png
复制到actionbar_back_nor~ipad.png
和actionbar_back_pre~ipad.png
。
我不确定,但这似乎是唯一可以隐藏原因的点。
但问题很有意思,我会在几天内为自己研究它。所以如果你需要更多的信息,我们可以联系。
如果您遇到此错误,那么您的应用程序将编译。您的图像是否在要复制的文件列表中? – Neva 2015-02-11 09:57:12
是的,我没有问题在iPhone上安装它32位或64位。 – Suprie 2015-02-11 09:59:22
你应该更新标题 – Neva 2015-02-11 10:00:23