Как я могу правильно прочитать документацию iOS для iOS?
Я следил за учебником, который я нашел в Интернете, была строка кода вроде этого:
var myImage = UIImage(named: "icon")
Я понимаю, что делает эта строка, но я не хочу ее запоминать, конечно, я хочу понять, как автор придумал этот код, поэтому я ищу документацию для ссылки класса UIImage, нет ничего под раздел инициализаторов, который идентифицирует этот код, так почему? Где я могу узнать больше об этом коде?
Я прочитал много учебников, которые я нашел в Интернете, смотрел много видеоуроков и читал много книг, ВСЕ из них без каких-либо исключений они показывают вам код, они полностью объясняют это, НО они не говорят, я расскажу вам, как они придумали это, как они нашли правильный метод для правильной работы?
Должен ли я тратить время на чтение документации Apple вместо всех этих учебных пособий? Есть ли что-то, что я делаю неправильно? Я что-то упускаю? Я не хочу запоминать все, что я читал, поэтому не хотел изучать разработку приложений, я хочу понять, где искать правильный код, я хочу научиться думать как разработчик.
Ответы
Ответ 1
Есть 3 полезных источника письменной информации:
-
Пример кода/учебники:
Официальная документация великолепна, если у вас есть опыт программирования в Xcode/iOS, но это трудное начало. Ничего не сравнится с хорошим примером кода.
Пример кода (от Apple, от Stack Overflow, от Ray Wenderlich, откуда бы вы ни находились) - отличный способ узнать. Даже люди, пишущие учебники, которые вы читаете, начинаются с кода примера других людей. Первые люди, изучающие iOS, начали с примера кода от Apple.
-
Официальная документация:
Чтобы получить официальную документацию option, нажмите UIImage
в своем коде или на игровой площадке. В раскрывающемся списке выберите UIImage Class Reference. Инициализатор, который вы ищете, есть:
+ imageNamed:
Возвращает объект изображения, связанный с указанным именем файла.
Декларация
SWIFT
init?(named name: String) -> UIImage
OBJECTIVE-C
+ (UIImage *)imageNamed:(NSString *)name
Параметры
имя Имя файла. Если это первый раз, когда изображение загружается, метод ищет изображение с указанным именем в приложениях основной пакет.
Возвращаемое значение Объект изображения для указанного файла или nil, если метод не смог найти указанное изображение.
В Swift, конечно, вы не вызываете инициализаторы напрямую, вызывая init
. Вместо этого вы используете имя класса UIImage
в этом случае. name
- это внутреннее имя параметра, а ?
указывает, что это инициализатор с ошибкой, который может возвращать nil
, поэтому на самом деле этот инициализатор возвращает UIImage?
. Поэтому вы должны посмотреть init?(named name: String) -> UIImage
и подумать UIImage(named: String) -> UIImage?
.
-
Заголовочные файлы:
Введите UIImage
в свой код или на игровое поле и Command - нажмите на него. Это приведет к отображению информации файла заголовка для UIImage
. Самый первый инициализатор:
init?(named name: String) -> UIImage // load from main bundle
Вы можете много узнать из чтения заголовков. Я рекомендую их часто проверять.
Ответ 2
Трудный бит - это то, как Swift имеет дело с инициализаторами. Я предлагаю "купить" бесплатный "Быстрый язык программирования" iBook и прочитать главу об инициализаторах.
В объявлении инициализатора появляется слово "init", но вы не используете слово init при его вызове.
Объявление
init?(named name: String) -> UIImage
Значок вопроса сообщает вам, что это инициализатор "failable".
Вместо того, чтобы вызывать его со словом init, вы помещаете имя класса так, как будто это имя метода, и параметры после:
UIImage(named: "name")
Он становится более сложным для методов init, таких как initWithFrame:
. В этом случае он анализирует "с" и создает параметр "кадр".
Я не собираюсь рассказывать обо всем здесь. (Я все еще изучаю нюансы.) Как я уже сказал, прочитайте главу об инициализаторах в Swift iBook.
Ответ 3
1) Он находится в разделе "Процедуры загрузки кэшированных изображений". Может быть, вам нужно переключиться на код Swift в документации?
2) Учебники и примеры кода хороши для изучения языка, платформы и передового опыта. Вы можете сделать резервную копию с лекциями по ссылкам.