Почему не создаются экземпляры классов?

class

#1

В основах языка Swift говорится, что класс это паттерн, типа шаблона, на основе которого создаются экземпляры. И основная работа производится именно с этими экземплярами.

Но потом, при создании приложения, мы создаем файлы, где объявляем классы и практически весь код пишем внутри этих классов.

А где же тогда экземпляры классов? Как это работает?


#2
// Это класс
class User {
    var name: String?
}
// Это создание экземпляра класса
let user = User()

// А это создание другого экземпляра
let user2 = User()

// Это работа с экземпляром класса
user.name = "Вася"

#3

Это так. Но если пойти дальше, то получаем следующую картину:

Создаем объект в отдельном файле. Для простоты возьмем структуру.

struct User {
    var name: String?      
}

Затем создаем экземляры этого объекта во ViewController:

class ViewController: UIViewController {
    
    var user = User()
    var user2 = User()

    override func viewDidLoad() {
        super.viewDidLoad()
        
        user.name = "Vasya"
        user2.name = "Tanya"
    }
}

И вопрос такой - почему это все происходит внутри класса ViewController? Разве мы не должны создавать экземпляры этого класса и работать уже с ними? Ведь по логике получается, что весь код, который мы пишем внутри этого класса есть свойства и методы этого темплэйта, шаблона.


#4

Потому что это MVC, и в нем принято писать код в контроллере.

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


#5

Сексуальные предпочтения у каждого из нас разные, this is reality. Но в данном случае мы говорим о некоторых общих правилах. Т.е. получается, что одно из базовых правил о создании и использовании экземпляров в данном случае, даже не знаю как точно сказать, то ли отменяется, то ли игнорируется, то ли каким-то образом трансформируется. Или, возможно, что viewController это некий специфический класс, где такое возможно.

Или это специфика именно архитектуры MVC, а в других для каждого класса строго создаются свои экземпляры?


#6

Каким образом? Вам никто не запрещает писать код внутри класса.