我在CCSprite中显示来自URL的图片。有很多图像,因此我需要非常快速地加载图像。 我编写的代码在模拟器中运行良好,但在iPad上崩溃了。现在我无法从设备日志中理解任何内容。
我的代码:
NSData *d = [NSData dataWithContentsOfURL:[NSURL URLWithString:[Data valueForKey:[NSString stringWithFormat:@"%d", idx]]]];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [NSString stringWithFormat:@"%@ %@", documentsDirectory, string];
BOOL didWrite = [d writeToFile:filePath atomically:YES];
CCSprite * facebookImage = [[CCSprite alloc] initWithFile:filePath] ;
这里我将我的图像保存在文件中并将这些内容提供给CCSprite。
现在,来自URL的图像在模拟器中正确获取,但在设备上此代码崩溃。 P.S:还有其他方法,但它们的效果不好,所以我更喜欢NSRequest等方法。
答案 0 :(得分:0)
设置断点,单步执行代码。写入可能失败,因为您的路径在文件名之前包含空格(格式字符串:"%@ %@"
),或者因为字符串是nil。
编写故障安全代码:你已经有一个didWrite
标志,你应该有一个if子句在写(和下载)成功时创建精灵,否则记录错误并可能创建一个占位符精灵。
答案 1 :(得分:0)
要在CCSprite中显示来自URL的图像,我现在改变了我的方法。
UIImage *uiimage2 = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:urlString]];
CCSprite * facebookImage = [[CCSprite alloc]initWithCGImage:uiimage2.CGImage key:string];
希望这个答案对某人有所帮助。