我同意亚光, 适当的是判断力 。
合理的解决方案是惰性实例化属性,两个值都被检索 的 一旦 强> 第一次访问该属性时
class SysInfoModel { // Returns the hardware model identifier as a string lazy var macModel : String = { let service = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("IOPlatformExpertDevice")) defer{IOObjectRelease(service)} guard let modelData = IORegistryEntryCreateCFProperty(service, "model" as CFString, kCFAllocatorDefault, 0).takeRetainedValue() as? Data else { return "Hardware model not found" } return String(data: modelData, encoding: .utf8)! }() // Returns the OS Version as a String lazy var osVersion : String = { let osVersion = ProcessInfo.processInfo.operatingSystemVersion return "\(osVersion.majorVersion).\(osVersion.minorVersion).\(osVersion.patchVersion)" }() }