这是不必要的警告吗?

Pra*_*dda 1 iphone xcode objective-c

我的一个实用程序类中有一个以下静态方法

+ (UIImage *) getImage:(NSURL*) fromUrl { //Warning here
    NSData *urlData = [NSData dataWithContentsOfURL:fromUrl];
    UIImage *image = [[[UIImage alloc] initWithData:urlData] autorelease];
    return image;
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

bbu*_*bum 9

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

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

但是,有一个更微妙的问题. getImage:并不像标准实践所要求的那样具有描述性和描述性.

更好的方法声明是:

+ (UIImage *) imageFromURL: (NSURL *) anURL;
Run Code Online (Sandbox Code Playgroud)

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