我有一个基本的问题,关于在这种情况下Objective-C如何处理内存:
void testimage(){
UIImage * iu = [UIImage imageNamed:@"testimage"];
NSData *imageData = UIImagePNGRepresentation(iu);
giveimage(imageData.bytes);
}
我没有明确分配任何内存,因此也没有删除任何内存。我将二进制信息传递到另一个C函数(库API的一部分)giveimage
,然后将其用于非Object C语言代码库中的纹理。
我的问题是:这些数据的稳定性如何?它只是指向内存中某些数据的指针。在这种情况下,是什么导致系统无法用其他数据覆盖此内存?我自己没有以任何方式坚持下去,所以这里有担心吗?
在这种情况下,是什么导致系统无法用其他数据覆盖此内存?
约定:可可规则有关内存管理。在这里,您处于惯例的错误方面。该bytes
指针将不会持续更长的时间比它的NSData
实例。无论是NSData
和UIImage
每一个有限制的寿命testimage
的功能。
在这种情况下,你应该使用getBytes:length:
来复制数据到您自己的缓冲区,或以其他方式进行复制。否则,您的恐惧将得以实现,并且testimage
返回时数据将变为无效。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句