我最近在Lynda.com上观看了一个video tutorial,我注意到作者声明了一些包含两个类实例的全局变量。我的问题的主要原因是因为我听说我们需要尽量避免使用全局变量,除非你真的需要它们。我可以看到NSUserDefaults' Keys
使用全局变量,但我不确定全局实例。
以下是显示全局变量声明的代码。我只关注变量masterView
和detailViewController
。
import UIKit
var objects:[String] = [String]()
var currentIndex:Int = 0
var masterView:MasterViewController?
var detailViewController:DetailViewController?
let kNotes:String = "notes"
let BLANK_NOTE:String = "(New Note)"
class MasterViewController: UITableViewController {
// class code
}
将类实例声明为全局变量是否可以?
答案 0 :(得分:5)
从技术的角度来看,在你的Swift代码中使用全局变量肯定是可以的,因为你的程序不会崩溃或者其他方式会出现错误的行为#34;因为那个。在为演示构建快速示例时,全局变量提供了一种缩短代码的便捷方法。
然而,使用可变全局变量使其使用有问题存在缺陷。具体来说,它们破坏了封装。查看您提供的代码,两个变量
var objects:[String] = [String]()
var currentIndex:Int = 0
应隐藏在模型对象中,您可以在其上进行某种程度的控制。
如果你不小心清除它们,使用全局变量可能会产生一些意想不到的行为。例如
var masterView:MasterViewController?
var detailViewController:DetailViewController?
可能会保留对不再可见的视图控制器的引用。
答案 1 :(得分:2)
如果您希望在整个应用程序工作中只使用该类的一个实例,那么可以将类实例声明为全局变量。
注意:您可以隐藏这些属性&通过制作那些 私有 的实例的功能,您不希望全局实例变量访问它们。