gpt4 book ai didi

ios - 转换 __bridge CFType 以支持 ARC

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:30:30 33 4
gpt4 key购买 nike

有人可以帮我转换下面的代码以支持 ARC 吗?

UIFont *boldFont = [UIFont fontWithName:@"DINPro-Medium" size:14];
CTFontRef ctBoldFont = CTFontCreateWithName((__bridge CFStringRef)boldFont.fontName, boldFont.pointSize, NULL);
CGColorRef cgColor = UIColorFromRGB(0x2b776d).CGColor;

NSNumber* underline = [NSNumber numberWithInt:kCTUnderlineStyleSingle];
NSDictionary *ULSubattributes = [NSDictionary dictionaryWithObjectsAndKeys:
CFBridgingRelease(ctBoldFont), (id)(id)kCTFontAttributeName,
cgColor, (id)kCTForegroundColorAttributeName,underline, (NSString*)kCTUnderlineStyleAttributeName, nil];

我在最后一行遇到崩溃,

*** -[Not A Type retain]: message sent to deallocated instance 0x20ad4910
*** -[Not A Type class]: message sent to deallocated instance 0x20ad4910

我希望这是一个重复的问题。但我被困住了。谢谢。

最佳答案

这是我的一些实际工作代码,它们的功能与您的非常相似:

 CTFontRef font2 =
CTFontCreateCopyWithSymbolicTraits (
basefont, f, nil, kCTFontBoldTrait, kCTFontBoldTrait);
NSDictionary* d2 =
@{(NSString*)kCTFontAttributeName: CFBridgingRelease(font2)};
[mas addAttributes:d2 range:encRange];

请注意,我发布font2! CFBridgingRelease 的意思是“ARC,这个对象已经被保留;到时候释放它。”而 ARC 确实如此。没有泄漏,没有僵尸,没有崩溃,没有问题。

(另一方面,之前使用CTFontCreateWithName 创建的basefont 从未移交给ARC 进行控制,必须使用CFRelease 显式释放。)

这是我书中的更多 Core Text 代码,自始至终展示了 ARC 内存管理:

http://www.apeth.com/iOSBook/ch23.html#_core_text

这是我书中关于使用 ARC 进行 CFType 内存管理的部分:

http://www.apeth.com/iOSBook/ch12.html#_memory_management_of_cftyperefs

关于ios - 转换 __bridge CFType 以支持 ARC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15974030/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com