我有一个类URLCache扩展了NSURLCache
在URLCache.m中
+ (void)initialize {
NSString *_cacheSubFolder = nil;
NSUInteger _cleanCacheFilesInterval;
if (_pageType == FirstPage) {
_cleanCacheFilesInterval = FirstPageCleanCacheFilesInterval;
_cacheSubFolder = @"/WebCatchedFiles/FirstPage/";
}else if (_pageType == SecondPage){
_cleanCacheFilesInterval = SecondPageCleanCacheFilesInterval;
_cacheSubFolder = @"/WebCatchedFiles/SecondPage/";
}else if (_pageType == ThirdPage){
_cleanCacheFilesInterval = ThirdPageCleanCacheFilesInterval;
_cacheSubFolder = @"/WebCatchedFiles/ThirdPage/";
}
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
cacheDirectory = [[paths objectAtIndex:0] stringByAppendingString:_cacheSubFolder];
// cacheDirectory = [cacheDirectory stringByAppendingString:@"/"];
removeFilesInCacheInDueTime(cacheDirectory, _cleanCacheFilesInterval);
createDirectry(cacheDirectory);
supportSchemes = [NSSet setWithObjects:@"http", @"https", @"ftp", nil];
}
如果A.m调用URLCache.m,则A需要将_pageType参数发送到URLCache中,我不知道如何发送_pageType。
-(void)setPageType:(NSUInteger)pageType{
_pageType = pageType;
}
但是每次在上午
URLCache *sharedCache = (URLCache *)[NSURLCache sharedURLCache];
[sharedCache setPageType:self.naviType];
得到了
由于未捕获的异常而终止应用程序
'NSInvalidArgumentException',原因:'-[NSURLCache setPageType:]:
无法识别的选择器发送到实例0xabd1470'
为什么不能将参数发送到NSURLCache?
如何发送_pageType?
最佳答案
[NSURLCache sharedURLCache]
返回共享的URL缓存实例。如果尚未使用
setSharedURLCache:
设置自定义实例,则这是一个NSURLCache
对象。类型强制转换
(URLCache *)
不会更改对象,也不会将其“转换”为URLCache
对象。您可以使用NSLog(@"class = %@", [sharedCache class]);
这就是
[sharedCache setPageType:...]
引发异常的原因。还请注意,
initialize
是一种特殊的类方法,在创建该类的任何实例之前运行一次(很好的说明和链接:Objective-C: init vs initialize)。因此,检查_pageType
中的initialize
没有意义。因此,您必须先创建
URLCache
类的实例,然后可以将其设置为共享实例[NSURLCache setSharedURLCache:...]
关于iphone - 扩展NSURLCache不能使用参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13364419/