我的实用程序类
中有一个以下静态方法+ (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 *'
我没有注意到任何异常,这是我可以忽略的吗?或者我该如何解决?
答案 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"]];
(忽略命名约定......)