- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用以下代码生成 PDF,但它会导致内存泄漏,有人可以帮忙吗?代码如下。
- (void)drawText:(NSString*)textToDraw inFrame:(CGRect)frameRect {
NSMutableAttributedString *string = [[[NSMutableAttributedString alloc]
initWithString:textToDraw] autorelease];
// make a few words bold
CTFontRef helveticaBold = CTFontCreateWithName(CFSTR("Helvetica-Bold"), 8.0, NULL);
[string addAttribute:(id)kCTFontAttributeName
value:(id)helveticaBold
range:NSMakeRange(0, [string length])];
// add some color.
if (_flag == 1) {
[string addAttribute:(id)kCTForegroundColorAttributeName
value:(id)[UIColor whiteColor].CGColor
range:NSMakeRange(0, [string length])];
} else {
[string addAttribute:(id)kCTForegroundColorAttributeName
value:(id)[UIColor blackColor].CGColor
range:NSMakeRange(0, [string length])];
}
// layout master
CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)string);
CGMutablePathRef framePath = CGPathCreateMutable();
CGPathAddRect(framePath, NULL, frameRect);
// Get the frame that will do the rendering.
CFRange currentRange = CFRangeMake(0, 0);
CTFrameRef frameRef = CTFramesetterCreateFrame(framesetter, currentRange, framePath, NULL);
CGPathRelease(framePath);
// Get the graphics context.
CGContextRef currentContext = UIGraphicsGetCurrentContext();
// Put the text matrix into a known state. This ensures
// that no old scaling factors are left in place.
CGContextSetTextMatrix(currentContext, CGAffineTransformIdentity);
CGContextSetRGBFillColor(currentContext, 0, 0, 0, 1.0);
// Core Text draws from the bottom-left corner up, so flip
// the current transform prior to drawing.
CGContextTranslateCTM(currentContext, 0, frameRect.origin.y*2);
CGContextScaleCTM(currentContext, 1.0, -1.0);
// Draw the frame.
CTFrameDraw(frameRef, currentContext);
CGContextScaleCTM(currentContext, 1.0, -1.0);
CGContextTranslateCTM(currentContext, 0, (-1)*frameRect.origin.y*2);
CFRelease(frameRef);
//CFRelease(stringRef);
CFRelease(framesetter);
}
我在生成时多次调用这个函数
PDF 每次都会导致内存泄漏。
最佳答案
CTFontCreateWithName
遵循 create-name-rule,即如果你创建它,你就拥有它,并且你必须在完成后释放它:
CFRelease(helveticaBold);
关于ios - 由于 CTFont Ref 导致的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14687568/
我正在使用以下代码生成 PDF,但它会导致内存泄漏,有人可以帮忙吗?代码如下。 - (void)drawText:(NSString*)textToDraw inFrame:(CGRect)frame
我正在尝试在 iPhone 应用程序中使用 CTFont。我有:- 添加了核心文本框架 添加了#import“CoreText/CoreText”。到我尝试在其中使用 CTFont 的文件。 但是编译
我试图在不丢失任何样式和属性的情况下将 CTFont 转换为 UIFont,例如: 字体名称 字体大小 字体颜色 下划线 粗体 斜体 等等 最佳答案 CTFontRef ctFont = ...; N
我有一个 CTFontRef,如何获取字符串形式的字体名称? 最佳答案 阅读此 http://developer.apple.com/library/mac/#documentation/Carbon
我正在使用应用于 CATextLayer 的自定义字体。我正在使用此处找到的教程和示例代码。 http://www.freetimestudios.com/2010/09/13/custom-font
我试图用下载的字体绘制一些文本。我查看了 API 文档并搜索了 Web。我找到了一个解决方案,但问题是它仅适用于 CoreGraphics 级别的框架。所以我寻找一种将CGFont转换为UIFont的
我正在尝试将一些代码移植到使用 UIFont 和 CTFont 的 Swift,并且(成功地,在 Objective-C 中)使用简单的桥接转换从一个到另一个,反之亦然。 例如,考虑这段代码(在 UI
我正在处理仅从资源加载 TTF。 This question帮助我回答了第 1 部分。但现在我需要 CGFont 或 CTFont 中的 NSFont。 这仅适用于 Mac 应用程序。 最佳答案 如何
我是一名优秀的程序员,十分优秀!