Cocoa touch 使用NSMutableData在内存中保留连续空间
如何强制Cocoa touch 使用NSMutableData在内存中保留连续空间,cocoa-touch,nsdata,nsmutabledata,memory-layout,Cocoa Touch,Nsdata,Nsmutabledata,Memory Layout,如何强制NSMutableData在同一节中保留连续内存?我有相当数量的数据逐件到达,性能不令人满意。我的数据的总大小将保持不变。NSMutableData应连续存储所有数据。在内部,它使用一个用realloc调整大小的“弹性”缓冲区。您可以使用[NSMutableData dataWithLength:]创建 如果大小不变,为什么不使用NSData 还有,为什么您要担心NSMutableData性能。instruments profile是否显示性能问题?使用dataWithCapacity:
NSMutableData
在同一节中保留连续内存?我有相当数量的数据逐件到达,性能不令人满意。我的数据的总大小将保持不变。NSMutableData
应连续存储所有数据。在内部,它使用一个用realloc调整大小的“弹性”缓冲区。您可以使用[NSMutableData dataWithLength:]创建代码>
如果大小不变,为什么不使用NSData
还有,为什么您要担心NSMutableData
性能。instruments profile是否显示性能问题?使用dataWithCapacity:
或initWithCapacity:
创建NSMutableData
对象。谢谢@rmaddy,我将使用initWithCapacity。您好@Justin,好的,我会再解释一下,缓冲区大小是恒定的,但我会按部分写入,数据来自外部附件,因此每次收到数据时,我都需要将其复制到rigth位置。我担心性能,因为我从附件接收到64KB的信息,需要3秒以上的时间(对我来说这是很多),所以我正在尝试优化代码。@JoseAlbertoDiaz使用memcpy([data mutableBytes]+offset,source,size)写入数据;或者更友好的替代品bytesinrange:withBytes: