SwiftとObjective-cでそれぞれ同じ関数名を持ったクラスがあったとする。
SwiftCls.Swift
class SwiftCls:NSObject {
func executePeroPero(target:String,Frequency frequency:Int) -> Void{
for i in 0..frequency
{
NSLog("%@ぺろぺろ",target)
}
}
}
ObjcCls.m
@implementation ObjcCls
-(void)executePeroPero:(NSString*)target Frequency:(int)frequency{
for(int i = 0;i< frequency;i++)
{
NSLog(@"%@ぺろぺろ",target);
}
}
@end
それぞれをSwift上からコールすると、同じ関数名なのに、Objective-cで書かれたほうがエラーになってしまう。
hoge.Swift
var swift = SwiftCls();
swift.executePeroPero("フェイトちゃん",Frequency:3)
var objc = ObjcCls();
objc.executePeroPero("フェイトちゃん",Frequency:3) // コンパイルエラーがおきる
Objective-cで書かれた関数の、最後の引数のラベルは小文字で書かないといけないようだ。(現時点では?)
エラーが起きないようにするには以下。
hoge.Swift
var objc = ObjcCls();
objc.executePeroPero("フェイトちゃん",frequency:3)
// フェイトちゃんぺろぺろ
// フェイトちゃんぺろぺろ
// フェイトちゃんぺろぺろ