그래픽 라이브러리를 처리 할 때 메모리 관리를 처리하는 방법, 특히 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 같은 낮은 수준의 라이브러리에서 메모리를 관리하는 방법에 대해 생각하는 누군가가 나에게 그것에 대해 생각하는 좋은 방법을 말할 수 있다면 감사하겠습니다 방법에 조금 혼란.