2011-02-18 55 views
0

例如下面的代碼內存安全嗎?NSMutableAttributedString addAttribute方法是否保留傳入的值?

NSMutableAttributedString *str = ...; 

CTFontRef aFont = CTFontCreateWithName((CFStringRef)fontName, size, NULL); 
[str addAttribute:(NSString*)kCTFontAttributeName value:(id)aFont range:range]; 
CFRelease(aFont); 

而且,是CTFontCreateWithName有效的多次調用或應一些努力進行緩存CTFontRef的相同的字體/大小?

+0

您是否對此問題有任何解決方法。我也有同樣的問題 – 2011-06-15 05:55:16

回答

1

我相信在將字體對象作爲屬性添加後釋放它是安全的。我在自己的核心文本代碼中這樣做,從來沒有任何問題。

至於緩存,如果字體對象被多次使用而不是釋放它並重新創建,那麼保留一個字體對象是有意義的。雖然這可能是預優化,所以我現在還沒有做出任何有意識的努力。使用您的當前代碼對其進行分析,然後決定是否多餘的微秒值得工作。

相關問題