我在问题标题中引用的错误消息让我在iPad上疯狂。
我正在从HTTP-Servers下载一些Jpeg-Files,并且在iphone(iOS 5.0)上使用我的代码可以正常工作。在我的iPad(4.3)上,它会发出此错误消息,无法显示图像。
让我想知道的是我如何修理它,这对我来说并不清楚!
所以我通过NSURLConnection(conn)和NSMutableData(imageData)下载Jpeg:
conn = [[NSURLConnection alloc]
initWithRequest:[NSURLRequest requestWithURL:[camera getJpgUrl]
cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
timeoutInterval:10]
delegate:self
startImmediately:YES];
if(conn && !imageData)
{
imageData = [[NSMutableData data] retain];
}
委托方法是:
1)获取更多数据
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
[imageData appendData:data];
}
2)拥有所有数据:
-(void)connectionDidFinishLoading:(NSURLConnection *)aConnection
{
UIImage *img = [UIImage imageWithData:imageData];
[imageData setLength:0];
[conn release];
conn = nil;
if(img)
{
imageView.image=img;
}
}
Hooray sais the iphone,欢迎大喊大叫的形象。
然而,在iPad上,当我重新启动初始化NSUrlConnection的方法时,我必须释放imageData-Object而不是将其长度设置为0。我重新启动它以进行图像更新等。
所以iPad中的代码(只是总结一下):
-(void)connectionDidFinishLoading:(NSURLConnection *)aConnection
{
UIImage *img = [UIImage imageWithData:imageData];
[imageData release];
imagedata = [[NSMutableData data] retain];
conn release];
conn = nil;
if(img)
{
imageView.image=img;
}
}
所以现在,我的代码中的imageData处理是测试的结果,所以我可以将其更改为移动优雅处理。那不是那么重要。
但令我惊讶的是,为什么setLength:0会在ios5 / iphone4上做它应该做的,但不能在ipad上做到?我希望我搞砸了一些东西,但在这里我真的不明白发生了什么。
有什么想法吗?
谢谢!
答案 0 :(得分:0)