0

単体テストを書いていて、NSKeyedArchiver/NSKeyedUnarchiver の奇妙な動作に遭遇しました。以下は失敗したテストです。私は間違っていますか?

これは簡単なプロジェクトです: https://github.com/genesislive2007/Archiving-Headache

-(void)test {

    NSData* serializedObject = [NSKeyedArchiver archivedDataWithRootObject:[Drug new]];

    id deserializedObject = [NSKeyedUnarchiver unarchiveObjectWithData:serializedObject];

    XCTAssertTrue([deserializedObject isKindOfClass:[Drug class]]);

}

アップデート

いくつかのログ:

NSLog(@"Class as string: %@", NSStringFromClass([deserializedObject class]));
NSLog(@"Address of the static class: %p", [Drug class]);
NSLog(@"Address of the object class: %p", [deserializedObject class]);

Archiving Headache[1638:60b] 文字列としてのクラス: Drug

Archiving Headache[1638:60b] 静的クラスのアドレス: 0x8bfd1d0

Archiving Headache[1638:60b] オブジェクト クラスのアドレス: 0x357c

上記のように、クラス記述子へのアドレスが異なります。

4

1 に答える 1