不同类型的全局声明之间有什么区别

时间:2019-06-17 05:31:46

标签: swift

我需要一些有关变量(以及函数)全局声明的建议

声明像这样的变量有什么区别

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都使用了一些变量,如果我声明它们是全局变量,可以吗?

2 个答案:

答案 0 :(得分:2)

这个问题有很多问题。我试图回答一些问题。也许会对您有所帮助。

方法1

var myglobalvariable = ""
  

您可以访问这些类型的变量而无需任何参考。您可以   在任何文件中定义它,并可以在当前模块中访问它   任何地方。因此,您可以在文件之外的任何位置定义它   范围。不需要静态的,所有全局变量都是   懒惰地计算。

方法2

struct globalvariablestruct{
    static var myglobalvariable = ""
}
  

您可以使用struct名称访问这些类型的变量,或者可以说我们需要使用struct名称来访问这些变量。

方法3

class globalstructoperation {
      struct glovalVariable {
         static var myglobalvariable = ""
     }
 }
  

您可以使用structclass 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方便的自动完成功能的其他好处。