【发布时间】:2018-11-09 20:10:13
【问题描述】:
我正在开发一个用 Objective-C 编写的项目,需要更新到 Swift。我们使用 C 文件来传输数据。
这是我在 Objective-C 中给出的代码:
- (NSData *)prepareEndPacket {
UInt8 *buff_data;
buff_data = (uint8_t *)malloc(sizeof(uint8_t)*(PACKET_SIZE+5));
// Call to C File
PrepareEndPacket(buff_data);
NSData *data_first = [NSData dataWithBytes:buff_data length:sizeof(uint8_t)*(PACKET_SIZE+5)];
return data_first;
}
在 C .h 文件中,我有这个供参考:
#define PACKET_SIZE ((uint32_t)128)
我似乎找不到将其转换为 Swift 的好方法。任何帮助,将不胜感激。
【问题讨论】:
-
该代码将泄漏 malloc 的数据。它应该使用
dataWithBytesNoCopy来创建NSData对象而不是dataWithBytes,以便NSData对象拥有malloc'ed 数据缓冲区的所有权。
标签: ios objective-c swift