2016-04-12 30 views
2

說我有斯威夫特便利初始化:是否可以調用雨燕方便初始化在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默認級別是足夠我的模塊。

+0

是什麼方法'initWithFoo的代碼: '?只要有'[Fooable foo:@「Bar」];'表明這是一個級別的方法,而不是實例級別的方法 – Popeye

回答