为什么没有找到编译器报告SDWebImageManager defaultCachePathForKey?

时间:2015-03-25 04:03:41

标签: objective-c xcode compiler-warnings sdwebimage

我看到编译器警告"实例方法-cacheKeyForURL未找到"和"实例方法-defaultCachePathForKey not found",在以下代码中:

SDWebImageManager *manager = [SDWebImageManager sharedManager];
NSString *cacheKey = [manager cacheKeyForURL:[NSURL URLWithString:imageUrl]];
NSString *cachePath = [[manager imageCache] defaultCachePathForKey:cacheKey];

enter image description here

很明显,这些方法已经定义。例如,这里是method definition in SDImageCache.h

/**
 *  Get the default cache path for a certain key
 *
 *  @param key the key (can be obtained from url using cacheKeyForURL)
 *
 *  @return the default cache path
 */
- (NSString *)defaultCachePathForKey:(NSString *)key;

在我的代码文件的顶部,我包含了SDWebImage项目中的相关文件:

#import <SDWebImage/UIImageView+WebCache.h>
#import <SDWebImage/SDImageCache.h>
#import <SDWebImage/SDWebImageManager.h>

此外,sharedImageManager中的SDWebImageManager.h is defined和编译器在找到它时没有任何问题。我只在第2和第3行发出警告。

我的代码运行正常,这些方法都可以正常运行而不会崩溃。为什么编译器告诉我它找不到它?

我正在运行XCode 6,仅针对Active Architecture Only,iPhone 6 Simulator进行编译。

更新

当我为Distribution编译时,&#34;所有架构&#34;突然它可以找到cacheKeyForURLdefaultCachePathForKey,没问题,但setImageWithURL现在已被弃用了?

enter image description here

我确实看到了deprecation warnings in UIImageView+WebCache.h,但我感到非常困惑的是,当SDWebImage的头文件看起来似乎没有打开/关闭各种编译器警告时,为什么构建这些不同的架构?有任何针对他们的架构。

1 个答案:

答案 0 :(得分:1)

我通过更仔细地检查“报告导航器”(neéLog Navigator)中的错误来解决这个问题。

enter image description here

事实证明,它选择链接的“Derived Data”文件夹中有一些非常旧的SDWebImageManager.h文件。不清楚他们为什么不干掉我的项目。 (可能与我通过Cocoapods从子模块迁移到包含SDWebImage的事实有关?)

used this answer on Stack Overflow导航到我的DerivedData文件夹,然后手动删除了我项目的子文件夹。在这之后,项目现在成功构建,没有虚假警告。