首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"NSURLSession sharedSession“不是NSURLSession

"NSURLSession sharedSession“不是NSURLSession
EN

Stack Overflow用户
提问于 2015-08-07 10:47:33
回答 1查看 352关注 0票数 1

我为NSURLSession创建了分类,然后我遇到了一个问题。在iOS 7中,[[NSURLSession sharedSession] isKindOfClass:[NSURLSession class]]返回NO

我知道[NSURLSession sharedSession]正在返回__NSCFURLSession的实例,但它不是NSURLSession的子类。所以,这没有任何意义。编译时一切正常,但在运行时我得到了无法识别的选择器异常。

我该怎么处理这件事?有什么我可以使用的运行时魔法特性吗?因为

代码语言:javascript
复制
[[NSURLSession sharedSession] respondsToSelector:@selector(dataTaskWithRequest:completionHandler:)]

返回YES,这是我在类别中使用的唯一方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-07 10:54:19

作为在类别中创建实例方法的替代方法,您可以创建一个接受NSURLSession实例的类方法。

假设有这样一个类别:

代码语言:javascript
复制
@interface NSURLSession (MyCategory)

- (void)doSomethingWithCompletion:(MyCompletionHandler)completionHandler;

@end

替代办法可以是:

代码语言:javascript
复制
@interface NSURLSession (MyCategory)

+ (void)doSomethingWithSession:(NSURLSession *)session completion:(MyCompletionHandler)completionHandler;

@end

用法如下:

代码语言:javascript
复制
[NSURLSession doSomethingWithSession:[NSURLSession sharedSession]
                          completion:^{ ... }];
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31875870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档