HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 为什么我不能通过在Swift中调用静态函数来初始化静态变量?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
据我所知,从 Xcode 6.3 / Swift 1.2开始,我可以在类中使用静态变量和方法.但是,当我尝试通过调用静态函数初始化静态变量时,编译器不喜欢它(我在下面的示例中得到错误’使用未解析的标识符getDefaultString’).这是一个演示我的问题的片段:
import Foundation

public class SetTings {
    private static var _bundle = NSBundle.mainBundle()
    static func getDefaultString(key: String) -> String {
        return _bundle.objectForInfoDictionaryKey(key) as! String
    }

    private static var _server = getDefaultString("DefaultServer")
    public class var server: String {
        get { return _server }
        set { _server = newValue }
    }
}

有人能帮我理解为什么我不能这样做吗?

解决方法

这应该工作:
private static var _server = SetTings.getDefaultString("DefaultServer")

我不确切地知道为什么,似乎在游戏中在某种假设,即在其前面没有类型限定的方法是实例方法.但这并不完全有效.例如.这会在游乐场产生有趣的结果:

class Foo {

        static func initFoo() -> String {
            return "static"
        }

        func initFoo() -> String {
            return "instance"
        }

        static var foo: String = initFoo()

    }

    Foo.foo

…不需要在initFoo()前面限定类型,但仍然会选择静态类型.可能是一个错误.

大佬总结

以上是大佬教程为你收集整理的ios – 为什么我不能通过在Swift中调用静态函数来初始化静态变量?全部内容,希望文章能够帮你解决ios – 为什么我不能通过在Swift中调用静态函数来初始化静态变量?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。