我为NSURLSession创建了分类,然后我遇到了一个问题。在iOS 7中,[[NSURLSession sharedSession] isKindOfClass:[NSURLSession class]]返回NO。
我知道[NSURLSession sharedSession]正在返回__NSCFURLSession的实例,但它不是NSURLSession的子类。所以,这没有任何意义。编译时一切正常,但在运行时我得到了无法识别的选择器异常。
我该怎么处理这件事?有什么我可以使用的运行时魔法特性吗?因为
[[NSURLSession sharedSession] respondsToSelector:@selector(dataTaskWithRequest:completionHandler:)]返回YES,这是我在类别中使用的唯一方法。
发布于 2015-08-07 10:54:19
作为在类别中创建实例方法的替代方法,您可以创建一个接受NSURLSession实例的类方法。
假设有这样一个类别:
@interface NSURLSession (MyCategory)
- (void)doSomethingWithCompletion:(MyCompletionHandler)completionHandler;
@end替代办法可以是:
@interface NSURLSession (MyCategory)
+ (void)doSomethingWithSession:(NSURLSession *)session completion:(MyCompletionHandler)completionHandler;
@end用法如下:
[NSURLSession doSomethingWithSession:[NSURLSession sharedSession]
completion:^{ ... }];https://stackoverflow.com/questions/31875870
复制相似问题