我需要一些有关变量(以及函数)全局声明的建议
声明像这样的变量有什么区别
import Foundation
var myglobalvariable = ""
和
import Foundation
struct globalvariablestruct
{
static var myglobalvariable = ""
}
和
import Foundation
class globalstructoperation {
struct glovalVariable {
static var myglobalvariable = ""
}
}
另外,我有一个API,在不同的视图控制器中使用了大约5次,可以将其声明为全局函数吗?
import Foundation
import Alamofire
func myapicall()
{
//stuff
}
如果存在(很多)全局变量/函数,Apple会拒绝应用程序吗?
在几个ViewController之间传递变量的最佳方法是什么?另外,有90%的ViewController都使用了一些变量,如果我声明它们是全局变量,可以吗?
答案 0 :(得分:2)
这个问题有很多问题。我试图回答一些问题。也许会对您有所帮助。
方法1
var myglobalvariable = ""
您可以访问这些类型的变量而无需任何参考。您可以 在任何文件中定义它,并可以在当前模块中访问它 任何地方。因此,您可以在文件之外的任何位置定义它 范围。不需要静态的,所有全局变量都是 懒惰地计算。
方法2
struct globalvariablestruct{
static var myglobalvariable = ""
}
您可以使用
struct
名称访问这些类型的变量,或者可以说我们需要使用struct
名称来访问这些变量。
方法3
class globalstructoperation {
struct glovalVariable {
static var myglobalvariable = ""
}
}
您可以使用
struct
和class name
访问这些类型的变量。此外,它使用结构创建pass by reference
变量。
我还有一个API,在不同的视图控制器中使用了大约5次,可以将其声明为全局函数吗?
是的,您可以使用全局函数或创建
singleton
类 一样。
如果存在(很多)全局变量/函数,Apple会拒绝应用程序吗?
否,因为Apple Reviewer团队仅检查了 我们的应用程序和应用程序没有违反任何Apple政策。
在几个ViewController之间传递变量的最佳方法是什么?另外,有90%的ViewcControllers都使用了一些变量,如果我声明它们是全局变量,可以吗?
是的,您可以在项目中定义
n number
全局变量 因为苹果不在乎内部开发方法。
答案 1 :(得分:1)
这全部与一种面向对象的编程概念有关。这里的问题是什么是封装?
let pi = 3.14159
第一种方法通常是可怕的形式。如果您整个项目中只有几个变量,那可以,但是当有很多变量时会发生什么呢?让我们考虑一下您的项目团队包括10个ios开发人员。当有人想要使用此全局变量时会发生什么。他/她如何找到它们并了解它们是什么?
class MathObjects{
static let pi = 3.14159
}
print(MathObjects.pi)
我认为,更好的方法是将全局变量封装到自己的类中。这样可以将所有内容集中在一个地方,并为您提供XCodes方便的自动完成功能的其他好处。