关于iOS项目的全局变量

时间:2016-06-10 08:12:53

标签: ios swift global-variables

我想知道如何在iOS Project中使用Global变量。

如今,我发现了一个由Swift写的文件。

本文档包含一些代码。

import UIKit

let log = ColorLogger.defaultInstance

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

      var window: UIWindow?


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

该程序只有全局变量n,即log。

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

我认为日志应该在appdelegate中。

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

是否正在使用iOS产品的全局变量标准?

2 个答案:

答案 0 :(得分:14)

有几种方法可以创造"全球" Swift中的变量,我将介绍其中的一些。

1。在AppDelegate

中定义变量

AppDelegate似乎是某些全局变量的逻辑位置。正如您所说,您可以在AppDelegate中创建记录器实例或创建其他内容的实例。

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

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

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

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

2。创建单身人士

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

基本上,单例是延迟加载的实例,只创建一次。让我们看一下代码示例:

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

   private init() {

   }
}

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

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

要使用它,你只需写:

MyDataStructure.sharedInstance

答案 1 :(得分:0)

在YourApp.swift中定义变量:

在使用SwiftUI的项目中,AppDelegate消失了。现在使用从App继承的结构来管理工作流程。在这种情况下,这就是创建全局变量的方法:

@main
struct YourApp: App {
    static let myGlobalVariable : String = "global"

    var body: some Scene {
        WindowGroup {
            Text("View")
        }
    }
}

在管理工作流程的结构中声明您的静态变量。然后,您可以使用:

在以后的任何文件中访问它。
YourApp.myGlobalVariable