我想知道如何在 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/