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