gpt4 book ai didi

Cocoa NSFont 'leading' 属性构建错误

转载 作者:行者123 更新时间:2023-12-03 17:37:31 26 4
gpt4 key购买 nike

在 AudioUnit 插件中,我使用 NSFont。

NSFontManager* fontManager = [NSFontManager sharedFontManager];
NSFont* nativefont = [fontManager fontWithFamily:[NSString stringWithCString: fontFamilyName.c_str() encoding: NSUTF8StringEncoding ] traits:fontTraits weight:5 size:fontSize ];

NSMutableParagraphStyle* style = [[NSMutableParagraphStyle alloc] init];
[style setAlignment : NSTextAlignmentLeft];

NSMutableDictionary* native2 = [[NSMutableDictionary alloc] initWithObjectsAndKeys:
nativefont, NSFontAttributeName,
style, NSParagraphStyleAttributeName,
nil];

// .. later
void someFunction(NSMutableDictionary* native2)
{
float lineGap = [native2[NSFontAttributeName] leading];

编译器说(关于最后一行):从不兼容的类型分配给“float”“NSCollectionLayoutSpacing * _Nullable”

注意:自从切换到 Xcode 11.1 以来,这个问题最近才失败,在旧版本的 XCode 上构建正常。任何帮助表示赞赏。

最佳答案

在您的代码中,表达式 native2[NSFontAttributeName] 的类型未知,因此属于 id 类型。编译器将允许您发送任何消息的 id 类型的对象,但它没有上下文来确定消息返回值的类型。

您想要获取 NSFontleading 属性,但编译器只是随机选择任何 leading 属性选择器,而我猜测它最终选择了 NSCollectionLayoutEdgeSpacingleading 属性,该属性的返回类型为 NSCollectionLayoutSpacing 而不是 float

我怀疑转换表达式 [(NSFont*)(native2[NSFontAttributeName])leading] 可以解决问题,但如果我编写这段代码,我只需引用原始的(输入)对象,因为您已经拥有它:

float lineGap = nativefont.leading;

关于Cocoa NSFont 'leading' 属性构建错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58795848/

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