我有以下形式的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