Вместо того, чтобы начинать с Swift, давайте начнем с человека, который является дизайнером/создателем/создателем языка программирования Swift, Криса Латтнера. Мощный компилятор LLVM (виртуальная машина низкого уровня), который Apple использует с XCode для создания программ на языке Objective-C, был разработан Крисом. После успеха LLVM Apple инвестирует Криса в разработку нового языка программирования; Крис и его команда тратят 4 года на разработку Swift.
Зачем Apple разработала новый язык программирования?
Этот вопрос заставит задуматься только тех, кто не знаком с языком программирования Objective-C.
Когда я начал свою карьеру в качестве разработчика iOS, я был знаком с Java и некоторыми другими языками программирования, поэтому первоначально сравнение Objective-C с другими языками автоматически приходит на ум при разработке приложений iOS, но позже я имел дело с препятствиями и ограничениями. цели-C.
В Objective-C вам всегда нужно писать больше строк кода по сравнению с Java для той же функциональности. Для iOS-разработчиков большой головной болью является управление памятью с помощью Objective-C (Изначально ARC был недоступен, его представила Apple с iOS 5). В настоящее время ARC доступен для управления памятью, но все же это не точно. Вы не можете реализовать точную автоматическую сборку мусора на языке с указателями. Вам всегда нужно заботиться о каждом отдельном объекте с Objective-C; у вас не было много времени, чтобы сосредоточиться на других частях вашего приложения. Swift — быстрый, простой в освоении и современный язык программирования; вам не нужно было тратить свое время на все эти проблемы в Swift. Итак, Apple приняла правильное решение, внедрив новый язык программирования Swift.
Почему Swift — быстрый, простой в освоении и современный язык программирования?
Давайте обсудим функциональность Swift, чтобы понять, почему это простой, современный и быстрый язык программирования.
Легкий:
Константы и переменные
Определить константы или переменные в Swift просто: используйте «let» для определения константы и «var» для определения переменной.
let companyName = "XYZ"
var
stockPrice = 256
Вывод типа
С Swift вам не нужно указывать тип с константами и переменными. Компилятор автоматически вывел его на основе присвоенного вами значения.
let userName = "Eric" // inferred as String
let userAge = 28 // inferred as Int
Интерполяция строк и изменчивость
Конкатенация строк в Swift — это простой способ включить значение в строку с помощью \().
1let Points = 500
2let output = "Jimmy today you earned \(Points) points."
Интерполяция/конкатенация строк немного сложна в Objective-C по сравнению со Swift. Вот код Objective-C для того же самого:
int Points = 500;
NSString *output = [NSString stringWithFormat:@"Jimmy today you earned %d points.",Points];
Проверьте простой способ изменчивости строк с помощью swift:
var
message = "Good Morning"
message += "Karan"
// Output will be "Good Morning Karan"
Необязательные типы возвращаемых переменных и функций
В Swift вы можете определить возможное отсутствующее или необязательное значение в переменных, поэтому вам не нужно беспокоиться об исключении с нулевым значением, с которым вы много раз сталкивались в Objective-C.
var
optionValue: Int?
Вы также можете указать параметры возвращаемого типа вашей функции, что невозможно сделать с помощью Objective-C.
func getUserName(userId: Int) -> String?
Массив и словарь
Objective-C предоставляет два типа всех своих переменных, обычные и изменяемые (например, NSArray, NSMutableArray, NSDictionary, NSMutableDictionary), я не знаю, почему Objective-C делает всю эту ерунду, почему она не предоставила единый тип для всех Переменная? Благодаря Swift стало проще работать с Array & Dictionary:
let usersArray = ["John","Duke","Panther","Larry"] // Array
println(usersArray [0])
let totalUsers = ["male":6, "female":5] // Dictionary
println(totalUsers["male"])
For-In: Диапазоны
Определение диапазона в цикле интересно со Swift, просто используйте .., чтобы сделать диапазон, исключающий верхнее значение, или используйте …, чтобы включить верхнее значение в диапазон.
for
i in 0...3 {
println("Index Value Is \(i)")
}
Современный:
Случаи переключения
Со Swift теперь можно сравнивать любые данные с Switches (это невозможно сделать с Objective-C). Вы также можете создавать условия с помощью оператора Case.
let user = "John Deep"
switch
user {
case
"John":
let output = "User name is John."
case
let x where x.hasSuffix("Deep"):
let output = "Surname of user is \(x)."
default:
let vegetableComment = "User not found."}
Функции
Swift предоставил некоторую полезную функциональность с функцией. Вы можете вернуть несколько значений из функции, используя кортеж:
func getUserList() -> (String,String,String){
return
("John","Duke","Panther")
}
В функцию также можно передавать переменное количество аргументов, собирая их в массив:
func addition(values:Int...) -> Int{
var
total = 0
for
value in values {
total += value
}
6return
total
}
Вы можете установить значение параметра по умолчанию в функцию:
func sayHello(name: String = "Hiren"){
2println("Hello \(name)")
}
Перечисления
Перечисления в Swift нужны не только для случаев; он предоставляет несколько функций. Как и классы, теперь вы также можете писать методы
into enumerations:
enum Section: Int {
case
First = 1
case
Second, Third, Fourth
case
Fifth
func Message() -> String {
return
"You are into wrong section"
}
}
Закрытия
Objective-C предоставляет блоки, небольшие фрагменты кода, которые можно передавать внутри приложения. Очень полезно выполнять определенную задачу для некоторого действия пользователя. Это удобно, а также улучшает читаемость кода. Так что я не удивлен, что блоки вернулись в Swift с именем Closures. В Swift вы можете писать замыкания без имени с фигурными скобками ({}).
var
users = ["John","Duke","Panther","Larry"]
users.sort({(a: String, b: String) -> Bool in
return
a < b
})
println(users)
// Output = ["Duke", "John", "Larry", "Panther"]
Кортежи
Swift представил расширенные типы, Tuples. Он недоступен в Objective-C. Кортежи позволяют создавать и передавать группы значений. Как мы видели в «функциях», кортежи позволяют вам возвращать несколько значений как одно составное значение.
(404, "Page Not Found", 10.5) // (Int, String, Double)
Дженерики
Вы можете создавать дженерики любых функций, классов или перечислений, когда вам требуется разнообразие типов переменных. Бывший. Вы можете создать универсальную функцию, которая использует содержимое массива, независимо от того, какие значения хранятся в массиве. Чтобы сделать обобщение, просто напишите имя внутри угловых скобок:
enum jobType<T>{
case
None
case
Some(T)
}
Структуры
Структуры похожи на классы, но исключают наследование, деинициализаторы и подсчет ссылок. Основное различие между классами и структурами заключается в том, что классы передаются по ссылке, а структуры всегда передаются путем их копирования.
struct normalStructure {
func message(userName: String) -> String{
return
"Hello \(userName)"
}
}
Быстрый:
Автоматическое управление памятью
- ARC уже доступен в Objective-C, но более точно работает со Swift. ARC отслеживает и управляет использованием памяти вашего приложения, поэтому вам не нужно самостоятельно управлять памятью. ARC освобождает созданные вами объекты, когда они больше не нужны.
- В Swift вам не нужно указывать сильное или недельное свойство с объектами, чтобы сообщить ARC, какой объект вы хотите удерживать временно, а какой для длительного использования, ARC автоматически идентифицирует его по ссылке на каждый объект.
Компилятор LLVM
- Компилятор LLVM преобразует код Swift в собственный код. Они оптимизировали компилятор LLVM для повышения производительности. Используя LLVM, Apple позволяет запускать код Swift параллельно с Objective-C.
- LLVM в настоящее время является основной технологией инструментов разработчика Apple; это помогает получить максимальную отдачу от оборудования iPhone, iPad и Mac.
Детские площадки
- Для меня использование Playgrounds похоже на игру с моим кодом. Игровые площадки делают написание кода Swift простым и быстрым.
- Площадки помогают вам просматривать ваши переменные в виде графика, они напрямую отображают вывод вашего кода, и вам не нужно каждый раз его компилировать. Он также отображает анимированную сцену вашей игры SpriteKit.
- Площадка похожа на инструмент тестирования вашего кода. Сначала проверьте вывод вашего кода с помощью площадки, когда вы его усовершенствовали, просто переместите его в свой проект.
- Playground будет более полезен, когда вы разрабатываете какой-либо новый алгоритм или экспериментируете с некоторыми новыми API.
Это подходящее время, чтобы перейти в Swift?
После представления Swift на WWDC 2014 Apple сразу же предоставила разработчикам руководство по программированию на Swift в iBook по той причине, что Apple стремится как можно скорее заменить Objective-C на Swift. Многие опытные разработчики iOS начали изучать Swift с первого дня его запуска. Некоторые начинающие iOS-разработчики также начали изучать Swift, не прикасаясь к Objective-C.
Изучение продвинутых и новых вещей в области ИТ, безусловно, является плюсом, но действительно ли сейчас подходящее время начать разработку со Swift? Я сказал нет!
Swift и XCode-6 в настоящее время находятся в бета-версии. Многие проблемы мы нашли в XCode-6, даже в стандартных шаблонах Swift. Стабильный релиз займет 2–3 месяца. Другая основная причина заключается в том, что мы все используем так много сторонних библиотек и фреймворков в приложениях для iOS, и все эти библиотеки и фреймворки в настоящее время доступны в Objective-C, как вы думаете, все это будет преобразовано в Swift всего за 2–3? месяцы? Я так не думаю, это займет много времени. Вы будете утверждать, что Apple предоставила функциональность для работы с кодом Swift бок о бок с Objective-C, но стоит ли разрабатывать приложение на Swift с использованием библиотек Objective-C? Как вы думаете, вы получите 100% выгоду от Swift, делая это?
Вот что я вижу и понимаю в Swift. Рады получить комментарии и предложения от вас.
Оригинальный источник: https://www.azilen.com/blog/developers-viewpoint-on-swift-programming-language/
Первоначально опубликовано @ https://www.azilen.com