静态函数与普通类函数

时间:2016-02-09 14:50:35

标签: ios swift performance memory-management static

我需要在我的应用程序中经常显示一个活动指示器,所以我写了一个这样的类。 进口基金会

class ActivityIndicator
{
    static func startActivityIndicator(mainView:UIView)
    {
        let activityIndicator = UIActivityIndicatorView()
        activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.WhiteLarge
        activityIndicator.color = UIColor.grayColor()
        activityIndicator.center = mainView.center
        activityIndicator.startAnimating()
        mainView.addSubview(activityIndicator)
    }
}

我已经制作了" startActivityIndi​​cator"函数static只是因为它看起来干净实现。我只是想知道如果我们在应用程序中加载大量静态函数,是否会对性能或内存有任何影响。 任何人都可以光明吗?

2 个答案:

答案 0 :(得分:1)

在一个实例中,静态函数与实例函数的不同之处仅在于它如何获取其隐式参数:实例函数为self采用一个隐式参数,而静态函数不为任何事物采用隐式参数。

就函数的代码而言,对于静态或非静态函数没有任何惩罚。性能也是如此:静态函数是可执行代码的最简单的轻量级“包”;打电话给他们不会产生任何额外费用。

但是,您的特定实现可能会受益于将activityIndicator存储在变量中,以避免在每次静态调用中重新创建它。此外,一旦活动结束,这将使您更容易从superview中删除活动指示符。如果您想使用单个activityIndicator,则可以将函数保持为静态,并为activityIndicator添加类变量。否则,您应该创建ActivityIndicator类的多个实例,每个实例都有自己的activityIndicator实例变量。在这种情况下,startActivityIndicator也应该成为实例方法。

答案 1 :(得分:0)

令人惊讶的是,就性能而言,使用静态方法会更好,因为您不必创建任何类的实例来调用它们。

因此,如果你想从100个不同的地方调用它,对于普通的函数,你将使用内存创建100个类的实例,而对于静态,你不会创建任何实例,因此大大减少了内存使用时间。

P.S。:数字100只是为了显示差异的强度。