【发布时间】:2009-04-19 15:57:54
【问题描述】:
我有这样的代码:
NSData *data = [NSData dataWithContentsOfURL:objURL];
const void *buffer = [data bytes];
[self _loadData:buffer];
[data release];
“_loadData”函数接受如下参数:
- (void)_loadData:(const char *)data;
如何在 Objective-C 上将“const void ”转换为“const char”?
【问题讨论】:
-
【数据发布】;线是不必要的。在非垃圾收集环境中,您的应用程序可能会崩溃,这表明您不完全了解 Cocoa 内存管理。仅当您明确调用 alloc、copy 或 mutableCopy(可能是我现在想不到的其他方法)时才释放。 [NSData dataWithContentsOfURL:] 返回的对象被自动释放或垃圾回收。
-
即使在没有垃圾回收的 iPhone 上?
-
在非垃圾收集环境中,对象被添加到自动释放池中,并且可能会在下一个事件循环或池本身被释放时被释放。在任何情况下,您都不会“拥有”返回的对象,因此如果您知道我的意思,则释放它不是您的。您只拥有通过 +alloc、-copy 或 -mutableCopy(可能还有其他方式)显式分配的对象。
-
啊。我明白。谢谢你。 :) 我还有一些关于这个主题的阅读,但你的解释肯定有帮助。基本上,除非我明确分配或复制它,否则不要担心释放对象。
标签: objective-c casting pointers constants