我有以下形式的ARC代码:objective-c内存管理 - 对象保证存在多久?
NSMutableData* someData = [NSMutableData dataWithLength:123];
...
CTRunGetGlyphs(run, CGRangeMake(0, 0), someData.mutableBytes);
...
const CGGlyph *glyphs = [someData mutableBytes];
...
...后面的代码读取内存从glyphs
,但没有任何与someData
,它不再被引用。请注意,CGGlyph不是对象类型,而是无符号整数。
难道我不必担心someData
的内存在我完成glyphs
(实际上只是指向someData
)之前可能会被释放吗?
所有这些代码都在同一范围内(即单个选择器),并且glyphs
和someData
都在同一时间超出范围。
PS在这个问题的早期草稿中,我提到了'垃圾收集',这并没有真正适用于我的项目。这就是为什么下面的一些答案给予了与ARC下发生的事情同等的待遇。
您是否真的在启用GC的情况下运行?你不得不打开它,它已经(预先)弃用了。或者你在谈论ARC,这不是GC? –
乔希问一个好问题。 GC!= ARC。 – MikeS
按要求更正。 – Merk