0x001
V2EX  ›  问与答

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

  •  
  •   0x001 · Sep 23, 2014 · 4470 views
    This topic created in 4270 days ago, the information mentioned may be changed or developed.
    虽说Swift与Objc可以相互混用,可是我今天发现一个问题,swift中无法调用objc中有变参的方法,
    如:
    - (void)showName:(NSString *)name, ... NS_REQUIRES_NIL_TERMINATION;
    - (void)showTitle:(NSString *)title;

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

    现在有些第三方库中就有这样的变参方法,如果用swift开发,那就无法调用,不知道有什么方法可以解决。望高手解答。
    3 replies    2014-09-23 16:18:41 +08:00
    finab
        1
    finab  
       Sep 23, 2014
    用objc写调用方法
    利用重载设置常用的参数调用个数
    swift调用objc写的调用方法
    0x001
        2
    0x001  
    OP
       Sep 23, 2014
    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
       Sep 23, 2014
    @finab 我调用code在上面
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4925 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 93c8b4a0 · 38ms · UTC 01:07 · PVG 09:07 · LAX 18:07 · JFK 21:07
    ♥ Do have faith in what you're doing.