来自类方法的实例方法swift

时间:2016-06-24 16:33:43

标签: ios swift function

我有一个类TestClass和一个类&里面的实例方法

class  TestClass {

    class func classMethod(){

       print("how do i call instance method from here")

    }

    func instanceMethod(){

        print("call this instance method")

    }


}

我的问题是如何从instanceMethod ??

调用classMethod

我注意到的一种方式是

class func classMethod(){

   TestClass().instanceMethod()

}

但是,这是一个好方法吗?

3 个答案:

答案 0 :(得分:5)

从设计的角度来看,你所做的事情很少有任何意义。

根据定义,instance methodinstance个对象进行操作。 例如,它可能需要访问某些实例成员,或以某种方式干涉您调用该方法的对象的状态。

另一方面,

class方法不需要实例来调用它们 - 并且通常应仅对给定参数进行操作,而不依赖于共享状态。

如果您需要在instanceMethod()中致电classMethod(),而instanceMethod()不需要任何状态 - 为什么它不是class方法,也不是(全局)纯粹的功能?

答案 1 :(得分:0)

要调用实例方法,您需要一个TestClass()的实例。这是TestClass().instanceMethod()在您致电class func classMethodUsingInstance(instance: TestClass)时得到的内容。

如果要从特定实例调用它,可以将其作为参数传递给类函数:instanceMethod()

如果您不需要key的特定实例,也可以考虑将其作为类方法。

答案 2 :(得分:0)

您可以将实例对象作为参数传递给类方法,然后调用该对象的实例方法:

class  TestClass {

    class func classMethod(obj:TestClass){

       print("how do i call instance method from here")
       obj.instanceMethod()
    }

    func instanceMethod(){

        print("call this instance method")
    }
}