将分配的缓冲区添加到NSMutableDictionay

时间:2013-04-25 10:19:42

标签: ios objective-c

是否可以使用malloc将动态分配的缓冲区添加到NSMutableDictionary,然后在直接添加后释放它。这是对的吗?

1 个答案:

答案 0 :(得分:1)

不,这非常非常糟糕。一旦你自由呼叫,操作系统就可以重新使用内存,因此任何缓冲区的使用都是不好的。

如果要将数据放入可变字典中,请改用NSData。

如果由于某种原因你需要存储一个malloc缓冲区(例如你从库中获得它),你需要将它包装在一个对象类中。

然后你可以从包装器对象的dealloc中调用free,这样就可以在释放包装器对象之前调用free(一旦字典被释放,它将由ARC处理。

@interface MallocedMemoryWrapper

@property ( nonatomic, assign) void* wrappedMemory;
@end

@implementation MallocedMemoryWrapper
- (MallocedMemoryWrapper*) initWithMemory:(void*) memory {

    self.wrappedMemory = memory;
}

- (void) dealloc {
    free( self.memory);
}
@end

}