我有一个我调用的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
电话
答案 0 :(得分:1)
问问自己这个问题 - 您是否明确致电malloc
和朋友? NSData bytes
的文档是否声明指针的所有权传递给调用者?
既然两个问题的答案都是肯定的,那么不,你不会(也绝不)打电话给free
。
你更关心的是指针的有效寿命。不要试图在NSData
对象的生命周期之外使用它。