ios - 关于 iOS 项目的全局变量

标签 ios swift global-variables

我想知道如何在 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 产品的标准吗?

最佳答案

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

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

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

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

   private init() {

   }
}

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

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

要使用它,您只需编写:

MyDataStructure.sharedInstance

关于ios - 关于 iOS 项目的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37743199/

相关文章:

ios - Swift Trie levenshtein 距离搜索

ios - 如何创建具有符合通用协议(protocol)的弱委托(delegate)的基类?

ios - Trello iPhone 应用程序是如何开发的?

swift - Home 按钮 Swift SpriteKit

ios - 将NSDate格式化为YYYYMMDDHHMMSS.XXX [gmt offset [:tz name]]

ios - kFIREventViewItem 事件日志参数未显示在 Firebase 控制台中

ios - 您如何引用在 for 循环中创建的特定 View ?

Java 只允许全局变量是静态的?

jquery - fullCalendar UNIX 时间戳转换问题与选择事件

javascript - javascript中无需刷新页面即可重新初始化全局变量