可以在Objective-C++(.mm)文件中调用Swift代码吗?有没有简单的解决方法,如果没有?
我有一个Xcode项目,它是Swift,Objective-C和C++的混合体.我没有问题从Objective-C到Swift用-Bridging-Header.h或从Swift到Objective-C用-Swift.h.
但我有一个.mm文件,它是Objective-C++.当我尝试#import "[ProductName]-Swift.h"它时会在-Swift.h文件中抛出许多编译错误,例如:
找不到'NSApplicationDelegate'的协议声明,你的意思是'NSConnectionDelegate'吗?
没有名为'NSTableViewDataSource'的类型协议
等等...
我已经研究了其他几个类似的问题,例如我可以将Swift与C++混合使用吗?就像Objective - C .mm文件一样,它似乎没有给我一个明确的答案或解决方案.
在我看来,我目前的解决方法是在Objective-C中创建一个使用Swift代码然后将其导入Objective-C++代码的包装器对象.
在Interface Builder中,我有一个不可编辑的标签(NSTextField)。标签的内容是使用Cocoa绑定创建的。绑定的值是NSAttributedString(使用talue转换器创建的)。见图片:
值转换器实质上按照Markdown格式(即,斜体和粗体)为特定字符指定字体。这样String-> NSAttributedString。标签的attributedStringValue已适当更改
在UI中选择标签时。字体重置为IB中指定的字体,而不是设置为的字体NSAttributedString。如果您不选择文本,那么一切看起来都会很好。
在点击标签之前:
单击/选择标签后:
NSTextField但是没有真正要覆盖的东西,它使我可以在选择文本时禁用任何字体更改。NSTextViews not NSTextFields 存在的大多数类似问题