我看到编译器警告"实例方法-cacheKeyForURL未找到"和"实例方法-defaultCachePathForKey not found",在以下代码中:
SDWebImageManager *manager = [SDWebImageManager sharedManager];
NSString *cacheKey = [manager cacheKeyForURL:[NSURL URLWithString:imageUrl]];
NSString *cachePath = [[manager imageCache] defaultCachePathForKey:cacheKey];
很明显,这些方法已经定义。例如,这里是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;突然它可以找到cacheKeyForURL
和defaultCachePathForKey
,没问题,但setImageWithURL
现在已被弃用了?
我确实看到了deprecation warnings in UIImageView+WebCache.h,但我感到非常困惑的是,当SDWebImage的头文件看起来似乎没有打开/关闭各种编译器警告时,为什么构建这些不同的架构?有任何针对他们的架构。
答案 0 :(得分:1)
我通过更仔细地检查“报告导航器”(neéLog Navigator)中的错误来解决这个问题。
事实证明,它选择链接的“Derived Data”文件夹中有一些非常旧的SDWebImageManager.h文件。不清楚他们为什么不干掉我的项目。 (可能与我通过Cocoapods从子模块迁移到包含SDWebImage的事实有关?)
我used this answer on Stack Overflow导航到我的DerivedData文件夹,然后手动删除了我项目的子文件夹。在这之后,项目现在成功构建,没有虚假警告。