Про программирование на Swift, iOS-разработку, обучение и старт карьеры в IT.
Мой курс по iOS-разработке: wwds.pro Instagram: instagram.com/dasha_astapova/
Почему стоит выбрать iOS-разработку, как стать программистом, учиться самостоятельно или на курсах, как найти работу и какую зарплату просить. Уроки по Swift, git, iOS-разработке. Вайтишные истории. iOS-реалити - проект, в котором можно наблюдать за тем, как девушка с полного нуля за 6 месяцев учит язык Swift и мобильную разработку и ищет первую работу в качестве программиста (выпуски каждую неделю).
Хороший возраст) кстати, недавно смотрела видео о том, как составлять резюме для американских компаний. Так вот там указание возраста или даты рождения является основанием отправить ваше резюме в мусорку!
Помню видео про одного ученика который SwiftUI изучил, и потом понял что нужно было UIKit изучать в первую очередь. Потому что UIKit в рф часто используют чем SwiftUI. Еще желательно objective c знать как на нем писать иногда в компании нужен древний язык Стива Джопса)
Objective-C от джунов сейчас уже редко требует, обычно допускается, что он его освоит уже в процессе работы. И у меня 3 года назад так было, понадобился objc на проекте, освоила
Здравствуйте, вопрос от не Swift-программиста. В реализации с использованием метода вы просто вызываете конструктор. Не проверяете, что экземпляр уже есть чтобы вернуть его а создайте каждый раз заново. Как происходит, что вызывающая сторона получает один и тот-же экземпляр а не каждый раз новый? Swift как-то по особому выполняет конструкторы в статических методах? Выполняются один раз при загрузке программы?
Добрый. Благодаря тому, что это свойство типа (о чем нам говорит static), инициализация происходит при первом обращении к shared, это так называемая lazy инициализация, даже не смотря на то, что здесь мы не помечаем свойство как lazy явно. Собственно она и гарантирует, что экземпляр синглтона создается только один раз (при первом обращении, не при запуске программы) и этот же экземпляр повторно используется при последующих вызовах.
@@iosnitsa Добрый день. Со свойством мне все понятно. Статические свойства инициализируются при загрузке программы. Но метод каждый раз должен выдавать новый экземпляр. Потому как он не читает заранее определенное статическое свойство а вызывает конструктор класса. То есть при каждом обращении к методу мы должны получать новый экземпляр. Но так как я не знаю Swift, возможно я не знаю какого-то магического поведения в данном случае. Мне стало очень интересно, вечерком поставлю Xcode и попробую. О вашего видно есть не несомненная польза для меня - Вы меня заинтересовали :)
@@iosnitsa As I expected the magic doesn't work :( class Cucumber { public var name: String = "Cucumber #\(Int.random(in: 0..<100))" private init() {} public static func getInstance() -> Cucumber { Cucumber() } } let c1 = Cucumber.getInstance() let c2 = Cucumber.getInstance() print("Name: '\(c1.name)'") print("Name: '\(c2.name)'") Building for debugging... [8/8] Linking one-cucumber Build complete! (0.78s) Name: 'Cucumber #62' Name: 'Cucumber #71' Here is the working version class Cucumber { public let name: String = "Cucumber #\(Int.random(in: 0..<100))" private init() {} private static var instance: Cucumber? = nil public static func getInstance() -> Cucumber { if instance == nil { instance = Cucumber() return instance! } else { return instance! } } } let c1 = Cucumber.getInstance() let c2 = Cucumber.getInstance() print("Name: '\(c1.name)'") print("Name: '\(c2.name)'") Building for debugging... [8/8] Linking one-cucumber Build complete! (0.79s) Name: 'Cucumber #77' Name: 'Cucumber #77' oleg@maclin:~/projects The second version is beneficial because the object's initialisation is waiting for the first usage of the instance. This approach can be used for optimization. Anyway, thank you so much. You make me wanna take a look at Swift closer :) Good luck
Вкратце, имеем значение, например, возраст пользователя. // Наше значение let userAge = 19 // Проверка условия, в нашем случае 19 > 18 это правда, что означает, что нужно выполнить блок кода, который отделен фигурными скобками после условия if userAge > 18 { print('Вам больше 18 лет') } // Дальше идем ниже // Делаем проверку еще раз, в нашем случае это ложь, что означает, что код, заключенный в фигурные скобки после условия, выполняться не будет if userAge < 5 { print('Вам меньше 5 лет') } // Теперь к ключевому слову проверки условия мы добавили еще одно ключевое слово else, что означает, что мы делаем проверку условия только в случае, если условия сверху не выполнились. Поскольку самый первый if у нас выполнил блок кода, то есть подошел по условию, то выражение ниже выполняться не будет else if userAge == 12 { print('Вам 12 лет') } // Ключевое слово else работает ровно так же, как и выражение выше else if, но есть деталь: если сверху условия не выполнились, и мы приходим в блок else if, то у нас выполняется вычисление условия, и только если условие будет правдой, блок кода выполнится. После же ключевого слова else, если не выполнилось никакое условие, то код в блоке else будет выполнен else { print('Я не знаю, сколько вам лет') }
@iosnitsa думаю, стоит немного увеличить длину шортсов, потому что на данный момент материал явно не влезает в данный формат. Спасибо, что продвигаете не топ-3 языки это приятно удивляет ☺
8:30 начиная с этого времени - все неверно. Синглтон не антипаттерн и у него не может быть ни минусов ни плюсов. А если идет сравнение с "чем-то", то нужно обязательно говорить относительно чего идет сравнение. А второе - кто конкретно называет его антипаттерном?
То есть вы сами не знаете кто автор утверждения синглтон-антипаттерн но на слово поверили статьям из интернета? Все что в интернете не значит что там все специалисты, это одно и то же, что верить записям на заборе или слушать бабок у подъезда. Вы рассуждаете с точки зрения своих предпочтений, а с научной точки зрения во вселенной все относительно. Никаких минусов ни плюсов не существует, что хорошо лично вам, то другому будет не приемлимо, это вопрос личных предпочтений. Если вы хотите действительно узнать, то существует лишь контекст применения синглтона, для каких задач он применяется. Это как колесо от автомобиля нельзя прикрутить к двухклесному велосипеду. Хотя прикрутить можно, но вряд ли вы сможете на нем быстро ездить, хотя если ваc не интересует быстрая езда, то колесо от авто вам подойдет.
Умница, Даша! Столько работы проделала, чтобы добиться таких результатов, отказывая себе во многом. Дальнейших успехов тебе, твоим помощникам и твоим ученикам. Дерзайте, творите, идите вперёд и вверх и побеждайте!
Главные минусы это необходимость покупать мак и айфон, для начинающих часто это не реально, найти работу чисто под iOS очень сложно, часто требуются сразу Android/iOS разработчики со знанием гибридных приложений типа флаттера, ionic, react native, а это в свою очередь требует знания и фронтенда со всеми вытекающими, в текущих реалиях имхо лучше начать с фронтенда и гибридных приложений и потом уже переходить на нативные