代码之家  ›  专栏  ›  技术社区  ›  jamesdlin

如何调用不带swift参数的objective-c`initfoo`方法?

  •  3
  • jamesdlin  · 技术社区  · 8 年前

    @interface MyClass: NSObject
    
    - (instancetype) initWithDefaultsFoo;
    - (instancetype) initWithDefaultsBar;
    
    @end
    

    open class MyClass : NSObject {
        public init!(defaultsFoo: ())
        public init!(defaultsBar: ())
    }
    

    MyClass 来自斯威夫特?

    var x = MyClass(defaultsFoo: ()) // ERROR: Editor placeholder in source file.
    var y = MyClass(defaultsBar: nil) // ERROR: Nil is not compatible with expected argument type '()'
    
    2 回复  |  直到 8 年前
        1
  •  1
  •   matt    8 年前
    var x=myclass(defaultsfoo:())
    
    

    应该有效。之所以看起来没有,是因为当Xcode自动完成调用时,它填充了一个占位符,看起来像-().but is not actually().

    (注意蓝色突出显示。检查磁盘上的文件也会显示占位符写为<t()>

    var x=myclass(defaultsfoo:void())
    
    

    似乎也有用,但可能更丑。

    ()()

    enter image description here

    <#T##()#>

    var x = MyClass(defaultsFoo: Void())
    

        2
  •  -1
  •   matt    8 年前

    init initWith... 取一个参数。你的Objective-C违反了命名规则,斯威夫特对它的翻译也随之火上浇油。