我正在尝试从“学习Robert Clair的Objective C 2.0”中学习Obj C的基础知识。
我有一个NSNumber对象数组,我将该数组写入NSData对象缓冲区。 我想做的是使用类似NSLog的方法验证NSNumber对象是否正确写入,但是尝试时我只会得到垃圾。
这是我的代码:
int howManyBytes3 = 100;
NSMutableArray *myArray3 = [NSMutableArray array]; //Creates an empty NSArray
for (NSInteger i=0; i<50; i++)
{
[myArray3 addObject:[NSNumber numberWithInteger:i]];
}
NSLog(@"My Array 3 contains : %@", myArray3);
NSMutableData *myData3 = [NSMutableData dataWithBytesNoCopy:myArray3 length:howManyBytes3 freeWhenDone:NO];
NSLog(@"myData3 contains : %@", myData3);
这是我在控制台上得到的输出:
2018-09-16 13:24:39.396705+0100 Chapter9[12351:1341392] myData3 contains : <917f30a8 ffff1d00 00000000 00000000 30186200
01000000 00000000 44000000 33000000 32000000 00000000 00000000 00000000 00000000 01050610 00000010 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 6ad3364c>程序结束 退出代码:0
我在做什么错了?
答案 0 :(得分:1)
NSMutableArray
不是C数组,它是一个对象引用。您正在尝试打印NSObject
的内部字节布局。
为此,
1)您需要对象序列化机制-例如NSKeyedArchiver
2)您需要字节到字符的转换=> How to display hexadecimal bytes using NSLog