假设我在Swift中有一个便捷的初始化程序:
extension UIImage {
convenience init?(bundleNamed name: String) {
let bundle = NSBundle(forClass: Foo.self)
self.init(named: name, inBundle: bundle, compatibleWithTraitCollection: nil)
}
}
在Objective-C中我怎么称呼它?以下内容不起作用:
[UIImage bundleNamed:@"Bar"];
[[UIImage alloc] initWithBundleNamed:@"Bar"];
我是否需要仅用于Objective-C的附加类扩展?
解决方案:按照下面Lasse的回答,我要做的步骤是:
在Objective-C类实现文件中,添加
#import <ModuleName-Swift.h>
然后我必须删除派生数据并重建。然后,我可以使用便捷初始化程序,如下所示:
[[UIImage alloc] initWithBundleNamed: @"Bar"];
我不需要声明初始化程序,public
因为默认级别internal
足以满足我的模块要求。
检出将Swift与Cocoa和Objective-C(Swift 2.2)结合使用-混合和匹配。看来归结为
public
,以及[YourProductModuleName]-Swift.h
导入代码中本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句