В классе UITouch отсутствует функция инициализации

Сегодня я получил огромное удовольствие от моего начинающего учебника по созданию собственных классов в Swift, которые могут порождать экземпляры объектов. Я надеюсь поправиться, опираясь на эти знания, чтобы начать использовать Apple Cocoa Touch API. Однако, читая ссылки на классы, такие как UIViewController, UIResponder и UITouch, я заметил, что эти классы не имеют функций init для порождения экземпляров. Думаю ли я, что все это неправильно или можно предположить, что эти классы предназначены для подкласса? И если они предназначены для подкласса, тогда мне нужно написать свою собственную функцию инициализации, чтобы порождать экземпляр и использовать его?

Немного предыстории, я думаю с точки зрения маленьких legos, где я могу построить все, что захочу, при условии, что я придерживаюсь абстрактных рецептов Apple (документация по ссылкам на классы) и размещаю их нужные типы, такие как строки, двойные числа, целые числа и т.д. в правильных местах, чтобы объекты ожили. Я правильно об этом думаю с точки зрения объектов Apple?

Вот пример того, что я сделал сегодня в учебнике, в котором есть функция инициализации, в которой я могу создавать объекты этого типа, и причина, по которой я думаю в терминах legos:

struct Location: Equatable {

    let name: String

    let coordinate: CLLocationCoordinate2D?

    init(name: String, coordinate: CLLocationCoordinate2D? = nil) {
        self.name = name
        self.coordinate = coordinate
    }

}

Я прочитал руководство по быстрому программированию и имею общее понимание. Я хотел бы начать пользоваться Cocoa Touch как можно скорее, потому что это выглядит захватывающе.

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

1 ответ

Решение

UIViewController есть пара init методы.

Классы как UITouch нет публичного init методы, потому что вы не должны создавать свои собственные экземпляры.

Классы как UIViewController предназначены для подкласса. Не принято использовать случаи UIViewController непосредственно.

И не забывайте, что в Swift любой подкласс получает init методы его родительского класса, если вы явно не добавите свой собственный init метод. Тогда подкласс имеет только init методы вы добавляете явно.

Другие вопросы по тегам