这是不必要的警告吗?

时间:2010-09-04 17:39:19

标签: iphone objective-c xcode

我的实用程序类

中有一个以下静态方法
+ (UIImage *) getImage:(NSURL*) fromUrl { //Warning here
    NSData *urlData = [NSData dataWithContentsOfURL:fromUrl];
    UIImage *image = [[[UIImage alloc] initWithData:urlData] autorelease];
    return image;
}

对于这种方法,我收到一个波纹管警告信息

  

警告:不兼容的Objective-C   初始化'struct NSURL *'的类型,   预期'struct NSString *'

我没有注意到任何异常,这是我可以忽略的吗?或者我该如何解决?

2 个答案:

答案 0 :(得分:9)

警告是正确的,因为存在冲突类型,并且与所有警告一​​样,您应该修复它。

更有可能的是,您声明了两个getImage:方法,一个采用NSString,另一个采用NSURL作为唯一参数。在Objective-C中,方法名称空间是平的,推荐的模式是任何给定的选择器只有一个声明的论证。

但是有一个更微妙的问题。 getImage:并不像标准惯例所指示的那样具有描述性,也不具有描述性。

更好的方法声明是:

+ (UIImage *) imageFromURL: (NSURL *) anURL;

更具描述性。不那么暧昧。

答案 1 :(得分:2)

你可能正在这样做:

UIImage * image = [MyUtilityClass getImage:@"http://example.com/image.jpg"];

你应该这样做:

UIImage * image = [MyUtilityClass getImage:[NSURL URLWithString:@"http://example.com/image.jpg"]];

(忽略命名约定......)