Cocoa touch 下载带有可变URL的图像?

Cocoa touch 下载带有可变URL的图像?,cocoa-touch,Cocoa Touch,我对这件事还不熟悉,所以请帮我把它说清楚。我一直在为iPhone应用程序修补Objective-C,但遇到了一个障碍 我试图将变量(字符串)中包含的值传递给方法,但它不起作用。我猜这是因为变量可能是指向值的指针,而不是值本身。我想知道你能否建议我如何修理 这里是方法 - (UIImage *)newUIImageWithURLString:(NSString *)urlString {    return [[UIImage alloc] initWithData:[NSData dataWit

我对这件事还不熟悉,所以请帮我把它说清楚。我一直在为iPhone应用程序修补Objective-C,但遇到了一个障碍

我试图将变量(字符串)中包含的值传递给方法,但它不起作用。我猜这是因为变量可能是指向值的指针,而不是值本身。我想知道你能否建议我如何修理

这里是方法

- (UIImage *)newUIImageWithURLString:(NSString *)urlString
{
   return [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:urlString]]];
}
发送此消息有效。。。在这里,我硬编码的网址,正在发送

UIImage* newimage = [self newUIImageWithURLString:@"http://images.mydomain.com/PhotoServer/Thumb/97/83358897.jpg"];
这个不。。。这里传递变量。我得到一个错误 传递的值没有值

UIImage* newimage = [self newUIImageWithURLString:newListing.ListingPhotoUrl];
我知道它确实有一个价值,因为下面的方法确实有效

self.ListingtitleLabel.text = newListing.ListingPhotoUrl;

有什么想法吗?

您确定动态URL有效吗?例如,如果newListing.ListingPhotoURL不是有效的URL或无法访问,则会出现此错误,因为您没有执行任何错误检查。虽然您的代码很简洁,但在调试时,或者至少在您对该语言更熟悉之前,您可能应该更详细一点。我建议将您的方法改写为:

-(UIImage*)newUIImageWithURLString:(NSString*)urlString {
  NSParameterAssert(urlString);
  NSData *pictureData = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlString]];
  NSAssert1(pictureData, @"No data returned for url: %@", urlString);
  return [[UIImage alloc] initWithData:pictureData];
}
使用这样编写的方法,您将立即知道是否出现了不符合预期的行为(断言宏将抛出异常)。如果您试图调试某些东西,这也为您提供了设置断点的更精确的位置