代码之家  ›  专栏  ›  技术社区  ›  Prashant Cholachagudda

这是不必要的警告吗?

  •  1
  • Prashant Cholachagudda  · 技术社区  · 14 年前

    在我的一个实用类中有一个静态方法

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

    对于这种方法,我收到了一条警告消息

    类型初始化“struct NSURL*”, 应为“struct NSString*”

    2 回复  |  直到 14 年前
        1
  •  9
  •   bbum    14 年前

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

    getImage: 声明的方法,一个 NSString NSURL 作为他们唯一的论据。在Objective-C中,方法名称空间是平面的,建议的模式是对于任何给定的选择器只有一个声明的参数。

    不过,还有一个更微妙的问题。 获取图像: 并不像标准实践所要求的那样具有描述性。

    更好的方法声明是:

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

        2
  •  2
  •   Dave DeLong    14 年前

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

    你应该这样做:

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