- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
有人可以帮我转换下面的代码以支持 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/
我有一个在 ARC (DTCoreText) 上运行的项目,我想在 UIFont 上实现一个返回匹配的 CTFontRef 的类别方法。这是我目前所拥有的: @implementation UIFon
是否可以创建不是从 CFTypeRef 派生的不透明类型,可以使用 CFRetain/CFRelease 保留/释放?或者如何从 CFType 派生新类型? 最佳答案 我从未这样做过,但可以使用私有(
我们正在努力使固定数组(及其所有固定组件,在多个级别)可变,似乎唯一的方法是遍历嵌套固定数组中的所有级别并创建使用 arrayWithArray 或 mutableCopy 的可变对象。 做一些研究我
有人可以帮我转换下面的代码以支持 ARC 吗? UIFont *boldFont = [UIFont fontWithName:@"DINPro-Medium" size:14]; CTFontRef
简而言之:如何在运行时确定id 是否为CFType 我正在实现 dynamic core data attributes在 ExtendedManagedObject 的 willSave 方法中,我
我希望能够在每次特定的 CFType 时记录消息(最好是中断调试器)对象(对于我目前的目的,一个 CGPDFDocument )被分配、保留、释放或释放。 因为没有 Create...() CGPDF
我在使用 Core Foundation 类型和集合方面的经验有限,所以如果这很明显,我深表歉意。 我正在使用 CFBitVector 类型来存储一些位序列,并且我需要将其存储为二进制数据格式(以便可
我一定是错误地使用了 NSUserDefaults 的自定义对象。错误“属性列表对格式无效:200(属性列表不能包含‘CFType’类型的对象)”。下面是我的代码,Goal 类特别有趣,因为这是我采用
我是一名优秀的程序员,十分优秀!