例如以下代码存储器是否安全?
NSMutableAttributedString *str = ...;
CTFontRef aFont = CTFontCreateWithName((CFStringRef)fontName, size, NULL);
[str addAttribute:(NSString*)kCTFontAttributeName value:(id)aFont range:range];
CFRelease(aFont);
另外,CTFontCreateWithName是多次调用有效还是应该做一些努力来缓存CTFontRef的相同字体/大小?
答案 0 :(得分:1)
我认为将字体对象添加为属性后释放它是安全的。我已经在我自己的核心文本代码中完成了这项工作,并且没有任何问题。
至于缓存,如果它将被多次使用而不是释放它并重新创建它多次,那么保持字体对象是有意义的。虽然,这可能是预先优化的,所以我不会做任何有意识的努力。使用您当前的代码对其进行分析,并确定额外的微秒是否值得工作。