В чем разница между различными типами глобальной декларации - PullRequest
4 голосов
/ 17 июня 2019

Мне нужен совет по глобальному объявлению переменных (и, надеюсь, функций)

В чем разница между объявлением переменной типа

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 отклонять приложение, если есть (много) глобальных переменных / функций?

Как лучше всего передавать переменные между несколькими ViewControllers? Кроме того, есть некоторые переменные, которые используются на 90% ViewControllers, это нормально, если я объявлю, что это глобальные переменные?

Ответы [ 2 ]

2 голосов
/ 17 июня 2019

В этом вопросе много вопросов.Я пытался ответить на некоторые вопросы.Возможно, это поможет вам.

Подход 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 проверила только функциональность нашего приложения, и приложение не нарушает какие-либо Applepolicy.

Каков наилучший способ передачи переменных между несколькими ViewControllers?Кроме того, есть некоторые переменные, которые используются на 90% ViewcControllers, это нормально, если я объявлю, что это глобальные переменные?

Да, вы можете определить n number глобальнойпеременные в проекте, потому что Apple не заботится о методологии внутреннего развития.

1 голос
/ 17 июня 2019

Это все об одной из концепций объектно-ориентированного программирования. И вот вопрос в том, что такое инкапсуляция?

let pi = 3.14159

Первый подход - вообще ужасная форма. Если у вас всего несколько переменных во всем вашем проекте, это может быть хорошо, но что происходит, когда их много? Давайте подумаем, что ваша команда проекта включает 10 разработчиков ios. Что произойдет, когда кто-то захочет использовать эту глобальную переменную. Как он может найти их и понять, кто они?

class MathObjects{
   static let pi = 3.14159
}
print(MathObjects.pi)

Я думаю, что лучший способ - это инкапсулировать ваши глобальные переменные в их собственный класс. Все это хранится в одном месте и дает вам дополнительное преимущество удобного автозаполнения XCodes.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...