【发布时间】:2011-12-31 16:24:16
【问题描述】:
我在问题标题中引用的错误消息让我在 iPad 上发疯了。
我正在从 HTTP 服务器下载一些 Jpeg 文件,并且使用我的代码在 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;
}
}
万岁 sais 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 上却不行?我希望我只是搞砸了一些东西,但在这里我真的不明白发生了什么。
有什么想法吗?
谢谢!
【问题讨论】:
标签: ipad uiimage ios5 nsurlconnection nsdata