ios – 使用未解析的标识符“静态”

我已经更新了 xcode 8.0 swift 3,我发现了很多错误.这是其中之一:

Use of unresolved identifier ‘Static’

这是我在以前的版本xcode 7.3.1 swift 2中创建和使用的类.

import UIKit

enum FONTSIZE:Int
{
    case sizesmall = 1
    case sizesbig = 2
    case sizemedium = 3
}

class sizefont: NSObject {

    private static var __once: () = {
            Static.instance = sizefont()
        }()

    class func getSize(_ enumFont : FONTSIZE) -> CGFloat {
        var siz = 17
        switch(enumFont){
        case .sizesbig:
            if((UserDefaults.standard.value(forKey: "fontsize") as AnyObject).int32Value == 0){// kecil
                if(isphone()){
                    siz = 22//17
                }else{
                    siz = 22//24
                }

            }else if((UserDefaults.standard.value(forKey: "fontsize") as AnyObject).int32Value == 1){// besar
                if(isphone()){
                    siz = 30//19
                }else{
                    siz = 30//28
                }
            }else{
                if(isphone()){
                    siz = 22//17
                }else{
                    siz = 22//22
                }
            }

            break
        case .sizesmall:
            if((UserDefaults.standard.value(forKey: "fontsize") as AnyObject).int32Value == 0){// kecil
                if(isphone()){
                    siz = 17//15//12
                }else{
                    siz = 24//22//19
                }
            }else if((UserDefaults.standard.value(forKey: "fontsize") as AnyObject).int32Value == 1){// besar
                if(isphone()){
                    siz = 19//17//15
                }else{
                    siz = 28//26//24
                }
            }else{
                if(isphone()){
                    siz = 17//15//12
                }else{
                    siz = 24//22//19
                }
            }
            break
        case .sizemedium:
            if((UserDefaults.standard.value(forKey: "fontsize") as AnyObject).int32Value == 0){// kecil
                if(isphone()){
                    siz = 15
                }else{
                    siz = 22
                }
            }else if((UserDefaults.standard.value(forKey: "fontsize") as AnyObject).int32Value == 1){// besar
                if(isphone()){
                    siz = 17
                }else{
                    siz = 26
                }
            }else{
                if(isphone()){
                    siz = 15
                }else{
                    siz = 22
                }
            }
            break
        }
        return CGFloat(siz)
    }

    func getnaMetag(){

    }

    class func isphone() ->Bool {
        if(UIDevice.current.userInterfaceIdiom == UIUserInterfaceIdiom.phone){
            return true
        }else{
            return false
        }
    }

    // example singleton swift
    class var sharedInstance: sizefont {
        struct Static {
            static var oncetoken: Int = 0
            static var instance: sizefont? = nil
        }
        _ = sizefont.__once
        return Static.instance!
    }


}

红线代码是Static.instance = sizefont().

我不知道为什么我会得到这个,其他人都知道吗?

解决方法

静态在类变量中声明,导致var声明之外的每个人都不可达,只是将它移到外面.
...
struct Static {
    static var oncetoken: Int = 0
    static var instance: sizefont? = nil
}
// example singleton swift
class var sharedInstance: sizefont {
    _ = sizefont.__once
    return Static.instance!
}
...

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...