說我有斯威夫特便利初始化:是否可以調用雨燕方便初始化在Objective-C
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?
解決方案:請按照以下拉塞的回答,我必須做的步驟是:
在Objective-C類實現文件,添加
#import <ModuleName-Swift.h>
然後我不得不刪除派生數據和重建。然後,我能夠使用的便利初始化如下:
[[UIImage alloc] initWithBundleNamed: @"Bar"];
我並不需要聲明初始化爲public
因爲internal
默認級別是足夠我的模塊。
是什麼方法'initWithFoo的代碼: '?只要有'[Fooable foo:@「Bar」];'表明這是一個級別的方法,而不是實例級別的方法 – Popeye