0

我有这样的代码片段

c = NSClassFromString(@"__NSCFURLSession");

使用 ios 7 模拟器,我能够得到 c

c类__NSCFURLSession 0x00000001113a2ce8

但在 ios 8 下,我得到了

c 类 0x0 0x0000000000000000

有人对此有解决方案吗?

4

3 回答 3

1

带有下划线的类__NSCFURLSession是私有的,不应直接访问。原因是,当底层实现发生变化时——就像它在 iOS 7 和 8 之间所做的那样——任何依赖于这些私有实现细节的东西都会受到破坏。

实际的公共类是NSURLSession,可以使用NSClassFromString(@"NSURLSession")或简单地访问它[NSURLSession class]

于 2014-10-16T01:20:43.390 回答
1

我认为 NSCFURLSession 不是一个真实的类,iOS 8 有更强的类类型检查并且能够检测到一个真实的类。

尝试将行更改为:

c = NSClassFromString(@"NSURLSession");
于 2014-10-16T01:09:47.553 回答
0

看起来 Apple 已将此私有类更改为 __NSURLSessionLocal

c = NSClassFromString(@"__NSURLSessionLocal")

于 2014-10-16T12:49:58.127 回答