iOS图像分辨率问题

时间:2012-02-20 14:42:21

标签: iphone objective-c ios5

在我的项目中,我使用从服务器下载图像的图像视图。它在iOS 4上运行良好,但在iOS 5上没有显示。

使用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{

}

2 个答案:

答案 0 :(得分:0)

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

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;

对于您的文件也可能因为某些原因导致您的连接失败。

答案 1 :(得分:0)

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

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

尝试正常分配ImageDownloader,然后在完成下载时释放它(在 connectionDidFinishLoading didFailWithError 中)