gpt4 book ai didi

objective-c - Cocoapods 框架中的 Swift 扩展导致无法识别的选择器发送到类

转载 作者:可可西里 更新时间:2023-11-01 02:18:43 26 4
gpt4 key购买 nike

我有一个 Swift 框架,它通过 Cocoapods 管理并包含如下扩展:

public extension UIImage {
public static func maskedImageWithColor( color: UIColor, forImageNamed image: UIImage) {
// Implementation
}
}

当我在我的主应用程序中用 Objective C 编写它时,我没有收到任何编译器错误或警告。

// No problems here!
[UIImage maskedImageWithColor:UIColor.blackColor() forImageNamed:@"myImage"];

但是,当我运行该应用程序时,它突然出现一堆“无法识别的选择器”错误。

奇怪的是,当框架包含在项目中并直接添加到构建阶段的相关部分(即不由 Cocoapods 管理)时,一切都按预期工作。

框架的其他方面——类、枚举等——也都工作正常,它似乎只是扩展,而且只有当它们在 Cocoapods 管理的框架中时。

关于我可能在这里遗漏的任何想法?

最佳答案

这是因为默认情况下链接器不会从静态库中加载类别方法。如果您要使用静态库添加类别方法(swift 中的扩展),请将 -ObjC 添加到目标build设置中的其他链接器标志。

阅读更多 here

关于objective-c - Cocoapods 框架中的 Swift 扩展导致无法识别的选择器发送到类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33511804/

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