gpt4 book ai didi

ios - "NSURLSession sharedSession"不是一种 NSURLSession

转载 作者:行者123 更新时间:2023-11-29 12:16:27 25 4
gpt4 key购买 nike

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

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

我该如何解决这个问题?是否有任何我可以使用的运行时魔术功能?因为

[[NSURLSession sharedSession] respondsToSelector:@selector(dataTaskWithRequest:completionHandler:)]

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

最佳答案

作为在类别中创建实例方法的替代方法,您可以创建一个接受 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:^{ ... }];

关于ios - "NSURLSession sharedSession"不是一种 NSURLSession,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31875870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com