3
我有这样的代码:演员 “常量无效*”,以 “为const char *”
NSData *data = [NSData dataWithContentsOfURL:objURL];
const void *buffer = [data bytes];
[self _loadData:buffer];
[data release];
的 “_loadData” 功能需要一个参数,如:
- (void)_loadData:(const char *)data;
如何转换“ const void “改为Objective-C上的”const char“?
[data release];线是不必要的。在非垃圾收集环境中,您的应用程序可能会崩溃,并且它表明您没有完全理解Cocoa内存管理。如果你明确地调用了alloc,copy或者mutableCopy(也许别人现在无法想象),那么你只能释放它。从[NSData dataWithContentsOfURL:]返回的对象会自动释放或垃圾收集。 – dreamlax 2009-04-19 17:00:42
即使在没有垃圾收集的iPhone上? – 2009-04-19 17:10:49
在非垃圾收集环境中,该对象被添加到自动释放池中,并且可能会在下一个事件循环或释放池本身时解除分配。无论如何,如果你知道我的意思,你就不会“拥有”返回的对象,因此它不是你的发布对象。你只拥有你明确分配的对象,通过+ alloc,-copy或-mutableCopy(也可能是其他)。 – dreamlax 2009-04-19 17:27:57