気が向いたのでプロジェクトにSwiftを混ぜてみた。
ら、obj-cのクラスメソッドをうまく呼べなかった。
documentにも何も書いてない。
現象
@interface someClass:NSObject
+ (instancetype)classMethodObject;
@end
みたいなのを
let x = someClass.classMethodObject()
とやろうとすると、エラーってくれる。
なにがunavailableだ! どう見てもあるだろ!
結論
面倒くさいので結論だけ書くと、obj-c = swift間のブリッジの実装が非常にクソで、メソッド名を拾って適当にごまかしてやがるようで、sharedObject
とかsingleton
とか、そういう感じのそれっぽい名前にしてやるとなんか認識される。
それか、あるいは、クラスメソッドを引数付きにするのでもいいらしい。
+ (instancetype)singleton{
return [self classMethodObject];
}
とかを付け加えてやると
let x = someClass.singleton()
は何故か通る。
参考
Swift's Objective-C bridging and initializers
How to call an Objective-C singleton from Swift? - Stack Overflow