我有下一个代码,用于将NSMutableString对象转换为NSData对象: -(NSData *)desSerializarFirma:(NSMutableString *)firma{ NSArray *arregloBits = [firma componentsSeparatedByString:@","]; unsigned c = arregloBits.count; uint8_t *b
          -(NSData *)desSerializarFirma:(NSMutableString *)firma{
    NSArray *arregloBits    = [firma componentsSeparatedByString:@","];
    unsigned c              = arregloBits.count;
    uint8_t *bytes          = malloc(sizeof(*bytes) * c);
    unsigned i;
    for (i = 0; i < c; i ++)
    {
        NSString *str = [arregloBits objectAtIndex:i];
        int byte = [str intValue];
        bytes[i] = (uint8_t)byte;
    }
    return [NSData dataWithBytes:bytes length:c];
} 
 当我用xCode分析它时,它说
memory is never released; potential leak of memory pointed to by 'bytes'
这句话指向我代码的最后一行:
return [NSData dataWithBytes:bytes length:c];
如果我通过执行’free(bytes)’释放对象,那么我的功能无用……任何帮助我都会感激
你需要释放字节,因为NSData没有获得它的所有权:它无法知道数组是临时的还是动态的,因此它会复制它.要解决此问题,请替换
return [NSData dataWithBytes:bytes length:c];
同
NSData *res = [NSData dataWithBytes:bytes length:c]; free(bytes); return res;
