MTFont doesn't handle memory management correctly for CTFontRef and CGFontRef. The ownership policy for Core Foundation as following:
Foundation:
If you create an object (either directly or by making a copy of another object—see The Create Rule), you own it.
If you get an object from somewhere else, you do not own it. If you want to prevent it being disposed of, you must add yourself as an owner (using CFRetain).
If you are an owner of an object, you must relinquish ownership when you have finished using it (using CFRelease).
The Create Rule:
Core Foundation functions have names that indicate when you own a returned object:
Object-creation functions that have “Create” embedded in the name
Object-duplication functions that have “Copy” embedded in the name
Per the above policy, MTFont shouldn't call CFRetain after CTFontCreateWithGraphicsFont or CGFontCreateWithDataProvider since CFRetain is already invoked when creating the objects.
MTFont doesn't handle memory management correctly for
CTFontRef
andCGFontRef
. The ownership policy for Core Foundation as following:Per the above policy, MTFont shouldn't call
CFRetain
afterCTFontCreateWithGraphicsFont
orCGFontCreateWithDataProvider
sinceCFRetain
is already invoked when creating the objects.