2012-02-20 91 views
1

在我的项目中,我正在使用从服务器下载图像的图像视图。它在iOS 4上工作正常,但它不在iOS 5上显示。iOS图像分辨率问题

使用iOS 5时是否有任何最低分辨率需要注意?来自服务器的图像之一是72 dpi分辨率,适用于iOS 4的但不是在iOS 5

我已经写类别图像视图将从图像URL 这里下载代码的代码片段:

- (void) setImageFromServer:(NSString *) imageURL 
{ 
    if (imageURL!=nil) 
    { 
     ImageDownloader *imageDownloader = [[[ImageDownloader alloc] init] autorelease]; 
     imageDownloader.requester = self; 
     [imageDownloader startDownload:imageURL]; 
    } 
} 


- (void) didDownloadImageData:(NSData *) data forImageURL:(NSString *) imageURL 
{ 
    [self setImage:[UIImage imageWithData:data]]; 
} 

在下载文件:

- (void) startDownload:(NSString *)MyimageURL { 

    self.imageData = [NSMutableData data]; 
    self.currentImageURL = MyimageURL; 

    self.downloadConnection = [NSURLConnection connectionWithRequest: [NSURLRequest requestWithURL:[NSURL URLWithString:self.currentImageURL]] 
                  delegate: self]; 
    [self.downloadConnection start]; 
} 



- (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { 
    [imageData appendData:data]; 
} 

- (void) connectionDidFinishLoading:(NSURLConnection *)connection { 
    [self.requester didDownloadImageData:self.imageData forImageURL:self.currentImageURL]; 
    isRewardTagImageAvailable = YES; 
    [connection release]; 
    connection = nil; 
} 

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{ 

} 
+0

倘使你共享一些代码 - 也确实应该显示图像之间没有差异在iOS5或iOS4中 – 2012-02-20 14:44:04

+0

@Gaz_Edge我添加了代码片段。谢谢 – Swapnil 2012-02-20 14:57:36

+0

你是iphone新手吗?使用ARC或手动管理内存似乎存在对内存管理术语(即autorelease等)的不一致使用? – 2012-02-20 15:25:06

回答

0

我不确定这是否是一个问题,但通常当我写一个NSURLRequest时,我首先按如下方式初始化事件并将请求插入到NSURLConnection中。有点像这样。另外请注意,一旦initURithRequst在NSURLConnection中,您不必告诉该连接开始,它会自动。

NSURLRequest *tempReq = [[NSURLRequest alloc] initWithURL:someURL cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10.0]; 
NSURLConnection *tempCon = [[NSURLConnection alloc] initWithRequest:tempReq delegate:self]; 

我的意思是它应该没有问题,但给一个镜头,因为看着你的代码,它看起来很好。

我建议加入didFailWithError方法:

-(void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error; 

您的文件,以及因为也许你的连接失败由于某种原因也是如此。

+0

我测试了我的代码在iOS 5.0上工作正常,但没有在iOS 5.0.1上。有没有API /图像dpi的问题? – Swapnil 2012-02-20 18:36:46

+0

不应该有。我一直使用类似的过程抓取图像,并没有真正遇到任何问题。我通常会遇到的问题是忘记为数组或NSMutableData分配内存。除此之外,当你尝试在类之间传递时,你可能会失去一些东西。 – MZimmerman6 2012-02-20 18:45:25

+0

我已经创建了一个示例项目,正在做你正在做的事情,并且我没有问题从互联网抓取图像并将其传递给UIImageView。如果你愿意,我可以发给你。 – MZimmerman6 2012-02-20 19:18:57

0

您的连接是同步还是异步?

如果是异步,则不应该自动释放ImageDownloader,因为它有可能会被释放用于connectionDidFinishLoading消息。

尝试正常的Alloc您ImageDownloader,然后释放它,当它完成下载(无论是在connectionDidFinishLoadingdidFailWithError

+0

啊打我吧! – 2012-02-20 15:45:58

+0

..........什么? – Martin 2012-02-20 15:51:15