SDWebImage:setImageWithURL在用于设置UITableViewCell的图像时失败

Chi*_*him 15 uitableview sdwebimage

当调用setImageWithURL时,它失败并跟随,

[UIImageView setImageWithURL:placeholderImage:]:无法识别的选择器发送到实例0x149a20 2011-12-14 18:11:38.060 [781:707]由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [UIImageView setImageWithURL:placeholderImage:] :无法识别的选择器发送到实例0x149a20'

我可以确认我已SDWebImage正确包含项目和必需的标题,因为我可以成功使用SDWebImageManager.

以下是我调用UIImageView类别方法的代码 setImageWithURL

NSURL* url = [NSURL URLWithString:@"www.abc.com/abc.png"];
[cell.imageView setImageWithURL:url placeholderImage:[UIImage imageNamed:@"abc.png"]];    
Run Code Online (Sandbox Code Playgroud)

小智 17

根据: 在静态库中链接objective-c类别

由于XCode中的链接器错误,您需要设置"其他链接器标志"设置您的构建目标.如下设置标志应该消除此错误.

-force_load ${BUILT_PRODUCTS_DIR}/libSDWebImage.a
Run Code Online (Sandbox Code Playgroud)

  • @ user739711是的我刚刚为xcode 4.5解决了它,我在"目标依赖项"中添加了arc框架,但我忘了将libSDWebImage.a(w/arc支持)添加到"链接二进制文件库" (2认同)

Hos*_*eeb 11

这将解决问题:打开"Build Settings"选项卡,在"Linking"部分中,找到"Other Linker Flags"设置并添加"-ObjC"标志: 在此输入图像描述

  • 在将'-ObjC'标志添加到'Other Linker Flags'部分之前添加ImageIO.framework和QuartzCore.framework. (5认同)
  • 谢谢你,帮助我的情况 (2认同)

Sil*_*ood 9

如果像我这样的人在看到所有其他答案之后仍然有问题(例如force_load或load_all),即使遵循了所有正确的安装说明,这是我在网上搜索后学到的:

  • 只有在使用iPhone 5S或64位模拟器时才会出现此问题
  • 这是libwebp的一个问题

此问题的解决方案: 只有在您的应用程序不需要64位处理器时才这样做(对于iOS编程来说太新了,不知道这句话是否有效)

  1. 转到构建设置>体系结构

  2. 在架构下,选择 Standard architectures (armv7,armv7s)

  3. 在构建有源体系只是,确保它两个DebugRelease

我的来源:https://github.com/rs/SDWebImage/issues/494

我希望这可以帮助那些像我一样在尝试解决问题时找到这个问题的人=)


Chr*_*zzz 6

我最终将所有.h和.m文件插入到我的项目中,然后它工作正常.当我只包含.a和.h文件时,我得到了同样的错误.

  • 我解决了将libSDWebImage.a添加到Build Phases> Link Binary with Libraries的同样问题 (4认同)