V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
0x001
V2EX  ›  问与答

swift 无法调用 objc 中有参数个数不定的方法

  •  
  •   0x001 · 2014-09-23 15:54:18 +08:00 · 3631 次点击
    这是一个创建于 3743 天前的主题,其中的信息可能已经有所发展或是发生改变。
    虽说Swift与Objc可以相互混用,可是我今天发现一个问题,swift中无法调用objc中有变参的方法,
    如:
    - (void)showName:(NSString *)name, ... NS_REQUIRES_NIL_TERMINATION;
    - (void)showTitle:(NSString *)title;

    第一个方法无法识别,第二个方法可以成功调用。

    现在有些第三方库中就有这样的变参方法,如果用swift开发,那就无法调用,不知道有什么方法可以解决。望高手解答。
    3 条回复    2014-09-23 16:18:41 +08:00
    finab
        1
    finab  
       2014-09-23 15:57:03 +08:00
    用objc写调用方法
    利用重载设置常用的参数调用个数
    swift调用objc写的调用方法
    0x001
        2
    0x001  
    OP
       2014-09-23 16:18:14 +08:00
    Objective_C code:
    @interface DemoObject : NSObject

    - (void)showName:(NSString *)name, ...;
    - (void)showTitle:(NSString *)title;

    @end

    @implementation DemoObject
    - (void)showName:(NSString *)name, ... {
    NSLog(@"name=%@", name);
    }

    - (void)showTitle:(NSString *)title {
    [self showName:title, @""];
    }
    @end

    Swift Code:
    var obj = DemoObject()
    obj.showTitle("");
    obj.showName(""); //compile error here
    0x001
        3
    0x001  
    OP
       2014-09-23 16:18:41 +08:00
    @finab 我调用code在上面
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   844 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 21:35 · PVG 05:35 · LAX 13:35 · JFK 16:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.