【问题标题】:About Global variable for iOS Project关于 iOS 项目的全局变量
【发布时间】:2016-06-10 08:12:52
【问题描述】:

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

现在,我发现了一份由 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 项目的变量的标准。

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

【问题讨论】:

    标签: ios swift global-variables


    【解决方案1】:

    在 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。创建单例

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

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

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

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

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

    要使用它,您只需编写:

    MyDataStructure.sharedInstance
    

    【讨论】:

    • 感谢您的回答。我打算使用单例作为全局变量。
    【解决方案2】:

    在 YourApp.swift 中定义变量:

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

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

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

    YourApp.myGlobalVariable
    

    【讨论】:

      猜你喜欢
      • 2013-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多