我是objective-c的新手,我不确定这段代码的正确内存管理是什么。
const unsigned char * data =(const unsigned char *) [string UTF8String];当我在数据上调用free时,我得到一个错误。打完电话后我需要清理一下吗?
发布于 2010-04-30 04:32:41
不是的。"UTF8String“不包含单词alloc、copy、retain或create。因此,您不需要对该内存负责。
请注意,如果您希望数据在string发布后仍然存在,则应该复制它;根据约定,您不对该内存负责,但也不能保证它将持续到提供它的对象的作用域之外。
发布于 2010-04-30 04:34:03
你不需要free它。
在Cocoa中,如果一个方法不包含单词alloc、init或copy,则您不拥有从该方法返回的对象。
-UTF8String实际上将指向您正在调用它的NSString对象的cstring表示形式。当对象的状态改变时,UTF8String也会改变。
发布于 2010-04-30 04:34:29
正如documentation中所述,它会以自动释放对象的方式自动释放。
https://stackoverflow.com/questions/2740575
复制相似问题