Как стать автором
Обновить

Комментарии 42

Хм, синглтоны в Swift уже давно не так делаются:


class MyClass {
    static let sharedInstance = MyClass()
}
Там private init() для потокобезопасноти нужно добавить(
private init() не спасет от рейс кондишн, тут приватный конструктор нужен чтобы запретить создание больше одного инстанса, у нас же всё таки синглтон)
private init() — это и есть приватный конструктор в Swift. :)
а я про что говорил? :) Вы сказали, что приватный конструктор нужен для потокобезопастности, а я говорю, что он тут нужен для защиты от повторного создания инстанса)
Точно. Я ж это под «потокобезопасностью» и имел ввиду. :)
Хорошо :) Просто для потокобезопасного решения я думал увидеть что-то из double-checked locking например :)
Статики в свифте ленивы и потокобезопасны.
Разумеется, к тому же у нас let модификатор. Спасибо.

Кучу всякой ненужной гуйни перечислили, а iterm и homebrew забыли.


И еще в копилку: скрипты ios-deploy и ios-sim из phonegap весьма полезны, с ними можно писать код в нормальном текстовом редакторе (а не в убогом xcode), собирать проект с помощью xcodebuild и потом деплоить на устройство/в симулятор, не открывая xcode.


brew install node
npm install -g ios-deploy
npm install -g ios-sim

Можно, кстати, своими силами обойтись, но будет не так красиво.
package.json:


"scripts: {
    "ios-build": "xcodebuild  -project ios/YourAppName.xcodeproj -scheme YourAppName -sdk iphonesimulator -destination platform='iOS Simulator',name='iPhone 6 Plus' -derivedDataPath ios/build",
    "ios-launch-sim": "xcrun instruments -w 'iPhone 5s (9.2)'",
    "ios-install-app": "xcrun simctl install booted ios/build/Build/Products/Debug-iphonesimulator/YourAppName.app",
    "ios-launch-installed": "xcrun simctl launch booted org.yourcompany.YourAppName",
   ...
}

Спасибо, унес в заметки.

по wifi ипашку на девайс зальет что-то из этого?

Нет. Эти скрипты, будучи выполнены последовательно, запустят проект на эмуляторе iPhone 5s.

Жаль( А так я знаком с этими тулзами, думал может что-то новое есть. Спасибо за ключик '-derivedDataPath', мне кажется "-destination platform='iOS Simulator',name='iPhone 6 Plus'" можно заменить просто на "-arch x86_64".
Ваш Podfile не будет работать с cocoapods 1.0.0 без указания имени таргета.
Думаю, Вы ошибаетесь. Этот файл вполне благополучно сейчас работает с cocoapods 1.0.0
Хм, может у вас rc еще стоит?

pod init
pod install

Analyzing dependencies
[!] The dependency `Alamofire` is not used in any concrete target.
The dependency `SwiftyJSON` is not used in any concrete target.
The dependency `RESideMenu` is not used in any concrete target.
The dependency `MBProgressHUD (~> 0.9.1)` is not used in any concrete target.
The dependency `MagicalRecord` is not used in any concrete target.
The dependency `SevenSwitch (~> 2.0)` is not used in any concrete target.
The dependency `SMIconLabel` is not used in any concrete target.


Тут они писали об этом http://blog.cocoapods.org/CocoaPods-1.0/
Очень странно. У меня буквально пару дней назад затребовало указания таргета в podfile и без этого ну никак не хотел их подтягивать. :(
Каждый раз когда в команду приходит новый сотрудник, приходится решать вопрос с тем, какие приложения стоит установить на его компьютер


А самому ему решать нельзя?
По графике добавил бы Pixelmator как альтернативу Photoshop.

И ещё модный Sketch. ;)

Еще есть модный PaintCode, сейчас активно пиарится ios сообществом. Интересно кто-нибудь использует/использовал?
Скорее AffinityPhoto как аналог PS, у них еще есть и Designer как замена CorelDraw и тп векторному софту.
Мой набор:
Основная IDE: AppCode
Вспомогательные редакторы: Sublime Text, VS Code
Документация: Dash
Гит: GitUp, P4Merge
HTTP-клиент: Postman
Графика: ImageMagick, Ghostscript, Pixelmator, GIMP, Zeplin
Трекинг времени: Qbserve
Общение: Slack, Skype
Разное: Alfred
Также предпочитаю Carthage вместо CocoaPods, хотя и поды приходится использовать.
А расскажите про Carthage поподробнее или дайте пару полезных ссылок на тему. Буду очень благодарен вам. :)
Никакого самоуправства с файлами проекта как у подов.
Никакой пересборки зависимостей при сборке проекта.
Выкачивает и собирает фреймворки, которые я сам куда нужно подключаю.
https://realm.io/news/swift-dependency-management-with-carthage/
О, спасибо большое.
минусы рассказать забыли :-)
1) долгое выкачивание и сборка фреймворков когда нужно добавить/удалить что то
2) нужно руками прописывать путь к каждому фреймворку и добавлять фреймворк в проект
2.1) это нужно сделать для каждого таргета
1.
Долгое, это если всё под все платформы собирать, но обычно нужна только одна, например, только iOS.
Также при удалении не нужно ничего пересобирать, а при обновлении/добавлении можно отдельно указать, какой обновить.

2.
Только в один скрипт для сабмита в стор надо дописывать фреймворки.
Только в один скрипт для сабмита в стор надо дописывать фреймворки.

Не поделитесь опытом? В проекте ибо в таргет прикладывается скрипт с путями и какие нужны фреймворки. Возможно я что то делаю не так и как вы пишете можно только в одном скрипте указать фреймворки (как в pod'ах можно было указать вот эти вот на все таргеты, вот этот вот «туда», а этот «туда»)

Также при удалении не нужно ничего пересобирать

ну да, на удаление не надо пересобирать. Но надо убрать из картежфайла запись, из таргета удалить фреймворк, потом найти его в скрипте и убрать путь до него.
Конечно ситуация добавления/удаления не такая и частая, но как то смущает. Особенно когда больше 1 таргета на проекте
> В проекте ибо в таргет прикладывается скрипт с путями и какие нужны фреймворки.
Да, я про этот скрипт и говорю, но пути там однотипные и относительные.
И этот скрипт нужен для подготовки фреймворков приложения для загрузки в айтюнс.
Между таргетами — копипастом :), но таргетов же обычно минимум.

По-моему, это минимальная плата за то, что ничего не ломается с каждой новой версией подов.
В качестве языка Obj-C используете?
Сейчас Swift в основном.
Поддержка свифта в аппкоде далеко не супер, конечно, но жить можно.
Она даже не доходит до уровня Xcode.
По части поддержки фич языка и вывода типов, да, не доходит.
Но как редактор кода AppCode на голову выше, и даже некоторые рефакторинги уже работают.
А с StoryBoard/Xib через Xcode работаете?
Тут IB в Xcode без вариантов. Также настройки проекта в Xcode делаю, у AppCode не все там гладко.
в другое я бы добавил ещё:
SimPholders 2.2 — для просмотра данных в CoreData
ИМХО, не стоит он тех денег, что за него просят. Реализовать такое — не великая проблема. К тому же недавно перестала работать App Store-версия, а разработчики перестали отвечать на письма. В итоге накидали собственный аналог за день:
https://github.com/dsmelov/simsim
Я, может, занудствую, но было бы удобно, чтобы на гитхабе во вкладке Releases лежал DMG с бинарником ;)
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.