使用返回对象的类型方法在幕后发生了什么?

时间:2018-01-03 23:41:16

标签: ios swift

我需要抽象一些功能所以让我们说我不希望用户创建一个类的实例来获取另一个类的另一个实例,我发现类方法存在于swift(又名类型方法)所以我是探索它们,安全/正确的做法如下:

public class Person {

    class func Greet() -> Greet {
        return Greet()
    }

}


public class Greet {

    public func sayHi(_ callback: () -> ()){
        callback()
    }
}

Person.Greet().sayHi{
    print("Hi you!")
}

我想知道这是如何在幕后工作的。例如,假设在Greet类我将进行一些网络连接,它将如何在内存方面起作用。我应该使用静态方法吗?

1 个答案:

答案 0 :(得分:0)

您的问题和代码没有多大意义。

Greet()类中的Person类函数基本上是一个创建并返回Greet对象的工厂方法。

这样做并没有真正的意义。它非常安全,但毫无意义。而只是使用:

let aGreet = Greet()

(直接创建一个新的Greet对象。)

至于线程,你的代码对线程没有任何作用。您发布的代码的每个部分都在主线程上运行。你的类结构与线程无关。

正如其他评论者指出的那样,您需要学习并遵循Swift命名约定。变量名称应以小写字母开头。类和类型名称应以大写字母开头。