我有以下语法:
UTF16Char buffer[16];
for(int i = 0; i < 16; i++){
buffer[i] = ' ';
}
NSData *data1 = [[NSData alloc] initWithBytes: buffer length : sizeof(UTF16Char) * 16 ];
NSData *data2 = [[NSData alloc] initWithData: data1];
BOOL sameSrc = data1bytes == data2.bytes;
NSLog ( @"Equals: %d" , sameSrc);
在iOS6 *中date1和* date2表示两个不同的地址,但在iOS7中指向相同的地址。这种行为是否符合预期且initWithData
行为正确?
Apple Library说:
使用内容数据初始化的数据对象。返回的对象可能与原始接收者不同。
所以我假设数据从date1复制到初始化date2对象。这是对的吗?
答案 0 :(得分:1)
这听起来像是非常有效的行为。文档确实说可能不同。 iOS 5和6都符合这个定义。
(我的猜测是,如果 data1 或 data2 是可变的,那么地址会有所不同,否则它们将是相同的。如果值是不可变的,则值是复制?)