在Swift / iOS中声明全局类实例是否常见/可行
发布时间:2020-12-14 04:35:34 所属栏目:百科 来源:网络整理
导读:我最近在Lynda.com上观看了一个 video tutorial,我注意到作者声明了一些包含两个类实例的全局变量.我的问题的主要原因是因为我听说我们需要尽量避免使用全局变量,除非你真的需要它们.我可以看到NSUserDefaults的密钥使用全局变量,但我不确定全局实例. 以下是
我最近在Lynda.com上观看了一个
video tutorial,我注意到作者声明了一些包含两个类实例的全局变量.我的问题的主要原因是因为我听说我们需要尽量避免使用全局变量,除非你真的需要它们.我可以看到NSUserDefaults的密钥使用全局变量,但我不确定全局实例.
以下是显示全局变量声明的代码.我只关心变量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 } 将您的类实例声明为全局变量是否可以? 解决方法
从技术的角度来看,在你的Swift代码中使用全局变量当然是可以的,因为你的程序不会崩溃或因此而“行为不端”.在为演示构建快速示例时,全局变量提供了缩短代码的便捷方法.
但是,使用可变全局变量使其使用有问题存在缺陷.具体来说,它们破坏了封装.查看您提供的代码,两个变量 var objects:[String] = [String]() var currentIndex:Int = 0 应隐藏在模型对象中,您可以在其上进行某种程度的控制. 如果你不小心清除它们,使用全局变量可能会产生一些意想不到的行为.例如 var masterView:MasterViewController? var detailViewController:DetailViewController? 可能会保留对不再可见的视图控制器的引用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- onlinemapsources.xml
- stored-procedures – 通过调度程序作业将参数传递给oracle
- 正则表达式实例
- SQLite,独家或.我如何清除旗帜?
- ruby-on-rails – ‘validates_presence_of’在Mongoid中效
- How to create XML validator from XML schema?
- vb.net – 访问查询中的列别名
- Ajax中get与post的区别,以及Ajax中的乱码问题的解决方法(
- ruby-on-rails – 在Rails API中使用render而不是respond_w
- ruby-on-rails – 如何使用youtube_it gem按频道获取视频