关于iOS项目的全局变量



我想知道如何在iOS项目中使用全局变量。

如今,我发现了一份斯威夫特写的文件。

此文档包含一些代码。

import UIKit
let log = ColorLogger.defaultInstance
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

这个程序只有全局变量n,它是日志。

日志通常用于开发,而不是生产。

我认为日志应该在appdelegate中。

但我不知道如何为iOS项目处理变量的标准。

使用全局变量是iOS产品的标准吗?

Swift中有几种创建"全局"变量的方法,我将描述其中的一些方法。

1.在AppDelegate中定义变量

AppDelegate似乎是一些全局变量的逻辑位置。正如您所说,您可以在AppDelegate中创建logger的实例或创建其他东西的实例。

要创建将用作全局变量的实例,请转到AppDelegate.swift并创建如下变量:

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
...
let myAppInstance = SomeClass()
...
}

然后,如果你想在应用程序的任何其他部分访问myAppInstance,你可以写:

let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDelegate.myAppInstance.doSomething()

2.创建singletons

Singleton可能是苹果平台上使用最多的设计模式之一。它们几乎存在于您在创建应用程序时使用的任何iOS API中,通常用于创建全局变量。

从本质上讲,singleton是只创建一次的惰性加载实例。让我们看看代码示例:

class MyDataStructure {
static var sharedInstance = MyDataStructure() // This is singleton
private init() {
}
}

我们已经创建了类MyDataStructure和名为sharedInstance的单例实例。这是singleton最常见的名称,因为singleton是通过应用程序共享的实例。

请注意在定义singleton时使用static关键字。static关键字告诉编译器只在第一次访问时创建sharedInstance。对sharedInstance的任何其他访问都将只重用第一次创建的实例。

要使用它,你只需写:

MyDataStructure.sharedInstance

在YourApp.swift中定义变量:

在使用SwiftUI的项目中,AppDelegate已消失。工作流现在由从App继承的结构进行管理。以下是如何在这种情况下创建全局变量:

@main
struct YourApp: App {
static let myGlobalVariable : String = "global"
var body: some Scene {
WindowGroup {
Text("View")
}
}
}

在管理工作流的结构中声明静态变量。然后,您可以稍后在任何文件中访问它,方法是:

YourApp.myGlobalVariable

相关内容

  • 没有找到相关文章

最新更新