Каждый раз когда в команду приходит новый сотрудник, приходится решать вопрос с тем, какие приложения стоит установить на его компьютер. Даже опытные разработчики не помнят всего списка того, чем они попользуются. Часть приложений запускается ежедневно. Часть — время от времени. Но, когда такого приложения нет под рукой — это часто становится потерей драгоценного времени. Как правило, первые дни отводятся на развертывание окружения и ознакомление со списком задач. Хорошо когда есть возможность пройтись по списку и отметить то, что было сделано перед погружением в проект. Из этих соображений был сформирован «портфель» с которым работает наша команда.
Подавляющее большинство приложений — бесплатные.
Софт обязательный к установке:
OSX — Apple OS последней версии устанавливается из AppStore (на момент написания — последняя версия OSX)
XCode: основное средство разработки в OSX и XCode
- XCode 7.3: itunes.apple.com/ru/app/xcode/id497799835?mt=12
- Command line tools for xcode: устаннавливается в обязательном порядке после установки XCode непосредственно из XCode. Содержит, в том числе, Git клиент, без которого доступ к Git из OSX будет невозможен.
SourceTree: Удобный клиент Git
Slack: Интрумент командной работы и общения в компании:
Текстовые редакторы:
- TextWrangler — удобен для работы с файлами, используемыми при разработке (.json, .plist, xml) и пр., кроме того, используется для разруливания конфликтов Git: itunes.apple.com/ru/app/textwrangler/id404010395?mt=12
Опционально:
Wireshark: HTTP Sniffer — предназначен для перехвата пакетов сети, ушедших через сетевую карту компа разработчика
Postman: удобное приложение для проверки REST API
Joxy: «облачное» приложение для мгновенного обмена скриншотами и файлами по сети.
Программы для управления iOS девайсами и снятия статистики
- iBackupBot: www.icopybot.com/download.htm
- iFunBox
IBeacons
- Поиск Beacon и снятие идентификаторов: Beacon Scan itunes.apple.com/ru/app/beacon-scan/id995724474?mt=12
FTP / SSH клиенты
VNC \ RDP клиенты:
- Remote Desktop — VNC: itunes.apple.com/ru/app/remote-desktop-vnc/id472995993?mt=12
- Microsoft RDP: itunes.apple.com/ru/app/microsoft-remote-desktop/id715768417?mt=12
Графические редакторы:
-
Adobe Photoshop: идеальный вариант - Acorn: альтернатива Adobe Photoshop: flyingmeat.com/acorn
- GIMP: жестокая альтернатива: www.gimp.org/downloads
- Векторный online-редактор, для рисования схем: draw.io
XCode plugins: Alcatraz
- Сайт: alcatraz.io
Чтоб установить его, следует выполнить в консоли команду
curl -fsSL raw.githubusercontent.com/supermarin/Alcatraz/deploy/Scripts/install.sh | sh
Ниже приводятся проверенные временем расширения.
- KSHObjcUML — инструмент визуализации зависимостей классов в Obj-C / Swift коде.
- ObjectGraph-Xcode — построение диаграмм по коду ( предварительно следует установить www.graphviz.org/Download_macos.php). Плагин работает только с Obj-C кодом.
- XAlign — вертикальное форматирование кода, по знаку =
- XToDo -панель с перечнем ToDo в коде
Другие рекомендуемые плагины:
- PreciseCoveration
- PrettyPrintISON
- RSImageOptimePlugin
- SuggestedColors
- SwiftJsonToObject
- XCodeRefactoringPlus
- ZMDocItemInspector
P.S. Учтите, что некоторые плагины могут приводить к нестабильности XCode.
Сниппеты
К сожалению, многие разработчики не знают или не умеют пользоваться сниппетами. Сниппеты — это выдержки («цитаты») часто используемых выражений.
Использование сниппетов очень сокращает ввод кода. Это лучше один раз увидеть, чтоб понять (см. gif)
Для создания сниппета необходимо перейти во вкладку Show the Snippet Library (1), нажать кнопку Edit (не показана на скриншоте), ввести соотвествующие поля (2) и не забыть, выбрать платформу.
Вставка кода осуществляется по мере ввода имени сниппета в поле редактирования кода.
Ниже приводятся примеры из индивидуального списка сниппетов
Custom class
import UIKit
class <#Class Name#> : NSObject {
// MARK: - Variables
// MARK: - Outlets
// MARK: - Public Properties
// MARK: - Private Properties
// MARK: - Constructors
override init() {
super.init()
}
// MARK: - Methods of class
class func start() {
}
// MARK: - Methods of instance
// MARK: - Actions
// MARK: - Overrided methods
// MARK: - Private methods
Custom Property
private var _<#property#>:<#Type#>?
var <#property#>:<#Type#> {
get
{
if _<#property#> == nil
{
_<#property#> = <#Type#>()
}
return _<#property#>!
}
set (value)
{
_<#property#> = value
}
}
Dispatch After SWIFT
let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(1 * Double(NSEC_PER_SEC)))
dispatch_after(delayTime, dispatch_get_main_queue()) {
println("test")
}
Dispatch Async
dispatch_async(dispatch_get_main_queue()) {
}
main queue
dispatch_async(dispatch_get_main_queue()) {
print(self)
}
Mark
// MARK: -
Singleton - Swift
// MARK: - Singletone Implementation
private override init() {
super.init()
}
class var sharedInstance: <#ClassName#> {
struct Static {
static var instance: <#ClassName#>?
static var token: dispatch_once_t = 0
}
dispatch_once(&Static.token) {
Static.instance = <#ClassName#>()
}
return Static.instance!
}
ViewController
import UIKit
class <#Class Name#> : UIViewController {
// MARK: - Variables
// MARK: - Outlets
// MARK: - Public Properties
// MARK: - Private Properties
// MARK: - Constructors
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: - Methods of class
class func start() {
}
// MARK: - Methods of instance
// MARK: - Actions
@IBAction func backButton(sender: AnyObject) {
self.dismissViewControllerAnimated(true, completion: nil)
}
// MARK: - Private methods
}
Cocoapods
Как же обойтись без упоминания Cocoapods, который, кстати, на днях дорос до версии 1.0.0
Основной ресурс:
Статьи:
Пример Podfile
platform :ios, '8.0'
use_frameworks!
pod 'Alamofire'
pod 'SwiftyJSON'
pod 'RESideMenu'
pod 'MBProgressHUD', '~> 0.9.1'
pod 'MagicalRecord'
pod 'SevenSwitch', '~> 2.0'
pod 'SMIconLabel'
use_frameworks!
pod 'Alamofire'
pod 'SwiftyJSON'
pod 'RESideMenu'
pod 'MBProgressHUD', '~> 0.9.1'
pod 'MagicalRecord'
pod 'SevenSwitch', '~> 2.0'
pod 'SMIconLabel'
Libraries
Огромный набор всевозможных библиотек (используется в зависимости от предметной области текущей разработки).
Поделитесь, пожалуйста, в комментариях, какие бесплатные приложения полезны лично вам для разработки в iOS.