嘿伙计们,这可能是一个显而易见的事情,但我无法弄清楚.
我的应用程序在屏幕上随机移动10个UIImageViews,一旦UIImageView到达角落,它就会改变它的图像.问题是:在应用程序之间切换并返回我的应用程序后,应用程序崩溃了.
控制台给我这个消息:
"App" exited abnormally with signal 10: Bus error
Run Code Online (Sandbox Code Playgroud)
崩溃日志说明了这一点:
Exception Type: EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x0000000000000011
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Run Code Online (Sandbox Code Playgroud)
我认为问题是由于我正在使用的事实UIImage imageNamed,这里是代码:
在ViewController.h中:
UIImage *red;
UIImage *green;
UIImage *blue;
UIImageView *ballOne;
UIImageView *ballTwo;
UIImageView *ballThree;
UIImageView *ballFour;
// And declare UIImageView for other balls
int clr
Run Code Online (Sandbox Code Playgroud)
在ViewController.m中:
- (void)viewDidLoad {
...
red = [UIImage imageNamed: @"redTexture.png"];
green = [UIImage imageNamed: @"greenTexture.png"];
blue = [UIImage imageNamed: …Run Code Online (Sandbox Code Playgroud) SO上已经有几个答案关于"imageNamed:"不起作用,但没有一个包含我特别的皱纹:
我是nil从iOS 7上的"imageNamed:" 获得的,但同样的版本适用于iOS 8.
显然,所有内容都可以正常连接,因为它可以在iOS 8上运行,但它可以在iOS 7上持续返回nil大范围(可能是24打)的图像.值得注意的是,我将资产移动到AssetCatalog开始的时间.iOS 7上的资产目录是否有一些不寻常的行为需要考虑?
以下是一些细节,基于本网站上类似问题的答案:
到目前为止,大多数的SO的答案是,将阻止其工作的错误可言.任何人都可以帮助进行仅适用于iOS 8的图像调用吗?
我使用循环将图像加载到NSMutableArray.每次迭代使用以下imagedNamed函数加载图像UIImage:[UIImage imageNamed:*name*];.
但是,我想改变一些图像.所以我从项目中删除了图像并添加了新图像.但是当我在iOS模拟器中运行应用程序时,会出现旧图像.即使我从项目中删除了所有图像,它们仍会出现.
有人可以解释为什么会发生这种情况,以及我如何改变它?
基本上我的代码大量使用[UIImage imageNamed]默认情况下从应用程序包中提取图像.
现在我希望从Documents(或库或其他)深处的目录中返回图像 - 而不是主包.由于有很多imageNamed调用实例,我正在考虑为此目的扩展(读取替换)UIImage ImageNamed实现.
我已经完成了这个但是不能完全弥补我应该做什么,什么是最好的:
我也不知道是否需要照顾@ 2x图像.我目前的捆绑包包括一堆,我想我的实现也必须要处理它.但不确定如何.