0

私はこのようなコードスニペットを持っています

c = NSClassFromString(@"__NSCFURLSession");

iOS 7シミュレーターを使用して、cを取得できました

c クラス __NSCFURLSession 0x00000001113a2ce8

しかし、iOS 8の下では、私は得ています

c クラス 0x0 0x0000000000000000

誰かがこれに対する解決策を持っていますか?

4

3 に答える 3

1

NSCFURLSession は実際のクラスではないと思います。iOS 8 では、クラス タイプ チェックがはるかに強化されており、実際のクラスを検出できます。

行を次のように変更してみてください。

c = NSClassFromString(@"NSURLSession");
于 2014-10-16T01:09:47.553 に答える
1

のようにアンダースコアで始まるクラス__NSCFURLSessionはプライベートであり、直接アクセスするべきではありません。その理由は、基礎となる実装が変更された場合 (iOS 7 と 8 の間で行われたように見える)、これらのプライベートな実装の詳細に依存するものはすべて壊れる可能性があるためです。

実際の public クラスはであり、または でNSURLSessionアクセスできます。NSClassFromString(@"NSURLSession")[NSURLSession class]

于 2014-10-16T01:20:43.390 に答える