我正在尝试从Swift调用Objective-C代码。我created a Swift Bridging Header,并添加了对Objective-C文件的导入(例如#import "UIColor+Utils.h"
)。
项目构建,我甚至得到代码完成,但是当它试图执行那行代码时,它会崩溃并说unrecognized selector sent to class
。
我做错了什么?
(Xcode 6.2,iOS 8.2)
答案 0 :(得分:11)
当您尝试从包含在桥接头中的文件调用扩展方法但未添加到正确的目标时,会导致此问题。
要解决此问题,请确保该文件是与当前正在运行的目标相同的目标的成员。
例如,如果您尝试从WatchKit扩展中调用Objective-C代码(例如UIColor+Utils.m
),那么.m文件(例如UIColor+Utils.m
)必须在其< strong>目标会员部分。
有关详细信息,请参阅下文。
如果在Bridging-Header.h
文件中包含.h文件,但忘记将文件添加到目标,则会出现以下行为。
如果您尝试在自己的班级上调用方法(例如ABCClass.doSomething()
):
Undefined symbols for architecture x86_64
。如果您尝试调用类扩展方法(例如UIColor.doSomething()
):
unrecognized selector sent to class
。答案 1 :(得分:0)