[字节]是否自动释放内存而不必使用免费?

时间:2017-02-24 22:23:00

标签: objective-c memory-management free

我有一个我调用的C API,如下所示:

- (NSData*)getFileContents {
     NSData *fileContents;

     //do something 

     return fileContents;
}

-(void*) manipulateFile {
    UInt8 *data = (UInt8*) [[self getFileContents] bytes];
    UInt32 dataLength = (UInt32)[[self getFileContents] length]; 

     //call some C API with the data and dataLength value          

}

现在我的问题是,我不必明确致电free(data)我想知道在bytes电话

的引擎盖下发生了什么

1 个答案:

答案 0 :(得分:1)

问问自己这个问题 - 您是否明确致电malloc和朋友? NSData bytes的文档是否声明指针的所有权传递给调用者?

既然两个问题的答案都是肯定的,那么不,你不会(也绝不)打电话给free

你更关心的是指针的有效寿命。不要试图在NSData对象的生命周期之外使用它。