0
我在處理圖形庫時處理內存管理有些困惑,特別是某些CoreText
對象。例如,我想爲CTFontRef
創建一個屬性,但實際上我不確定該如何聲明它。核心圖形庫中的內存管理
1)我應該把它當作一個原始的東西嗎?@property(nonatomic)
?還是我應該不把它當作財產申報?
2)我認爲我必須在dealloc中執行CFRelease(myFont)
,當我完成它時?如何正確釋放它
3)在下面的方法中,我是否正確地處理了一些事情? CTFontRef
已返回,但不是自動發佈的。我需要擔心這個嗎?
- (CTFontRef) loadCustomFontWithName:(NSString *)fontName ofType:(NSString *)type attributes:(NSDictionary *)attributes
{
NSString *fontPath = [[NSBundle mainBundle] pathForResource:fontName ofType:type];
NSData *data = [[NSData alloc] initWithContentsOfFile:fontPath];
CGDataProviderRef fontProvider = CGDataProviderCreateWithCFData((CFDataRef)data);
[data release];
CGFontRef cgFont = CGFontCreateWithDataProvider(fontProvider);
CGDataProviderRelease(fontProvider);
CTFontDescriptorRef fontDescriptor = CTFontDescriptorCreateWithAttributes((CFDictionaryRef)attributes);
CTFontRef font = CTFontCreateWithGraphicsFont(cgFont, 0, NULL, fontDescriptor);
CFRelease(fontDescriptor);
CGFontRelease(cgFont);
return font;
}
總體而言,只是如何看待來自像CoreGraphics中或CoreText底層庫的管理內存,並會很感激,如果有人能告訴我去想它一個很好的方式有點困惑。