我有一个类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()
}
但是,这是一个好方法吗?
答案 0 :(得分:5)
从设计的角度来看,你所做的事情很少有任何意义。
根据定义,instance method
对instance
个对象进行操作。
例如,它可能需要访问某些实例成员,或以某种方式干涉您调用该方法的对象的状态。
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")
}
}