0

我在 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 的图像在模拟器中正确获取,但在设备上此代码崩溃。PS:还有其他方法,但它们效果不佳,所以我更喜欢这种方法而不是 NSRequest 等。

4

2 回答 2

0

设置断点,单步执行代码。写入可能会失败,因为您的路径在文件名(格式字符串:)之前包含一个空格"%@ %@",或者因为字符串为 nil。

编写故障安全代码:你已经有一个didWrite标志,你应该有一个 if 子句,当写入(和下载)成功时创建精灵,否则记录错误并可能创建一个占位符精灵。

于 2013-03-25T09:17:56.863 回答
0

为了在 CCSprite 中显示来自 URL 的图像,我现在改变了我的方法。

UIImage *uiimage2 = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:urlString]];
CCSprite * facebookImage = [[CCSprite alloc]initWithCGImage:uiimage2.CGImage key:string];

希望这个答案对某人有所帮助。

于 2013-03-28T06:53:16.983 回答