Используем исходные коды без ARC в ARC-проектах
Если вы используете в своих проектах ARC (Automatic Reference Counting), то эта статья для вас.
Довольно часто приходится использовать исходные коды Third-Party разработчиков или же своих старые, где контроль над памятью проходит вручную. Очевидным решением всплывает ручная адаптация исходников под ARC.
Как раз в этом случае на помощь приходит следующий флаг компиляции:
-fno-objc-arc
1) Заходим в свойства таргета – Build Phases – Compile Sources
2) Выбираем файлы, которые не адаптированы под ARC
3) Нажимает Enter
4) Появится поповер для ввода флагов. Вводим -fno-objc-arc и снова нажимаем Enter
5) Запускаем компиляцию и видим, что уже нет ошибок, связанных с адаптацией под ARC
Скрываем лишние иконки с рабочего стола iOS
Надоели вечно мозолящие глаза бесполезные иконки Киоска, Акций и Passbook ? Выход есть, даже если у вас нет джейлбрейка!
В Appstore начинают появляться приложения, удаляющие лишние иконки с рабочего экрана, но живут они в этом магазине совсем не долго. Поэтому я решил сделать свой механизм, который будет работать вне магазина Apple.
Начнем трюк:
1) Перейдите с iOS-устройства по той ссылке, в зависимости от какого приложения вы хотите избавиться:
- Newsstand (Киоск)
- Stocks (Акции)
- Passbook
- Reminders (Напоминания)
- Для добавления других приложений напишите в комментариях
2) Появится всплывающее окно, нажимаем “Установить”
3) Начнется процесс замены приложения, завершится он ошибкой. Нажимаем “Готово”
4) Удаляем появившееся приложение стандартным способом: зажимаем на иконке, нажимаем крестик и подтверждаем удаление
Все готово, системное приложение удалено!
Для того, чтобы вернуть иконки в первоначальное состояние – достаточно лишь сделать перезагрузку или респринг
Работа с блоками
Со временем любому iOS-разработчику наскучит создавать свои синглтоны, которые взаимодействуют с остальными классами через Delegate. Пришло время использовать блоки.
Для справки: блоки появились впервые на Mac OS 10.6 и iOS 4.0, однако многие iOS-разработчики игнорируют этот факт.
Чем же хороши блоки и зачем их использовать? Разумеется в них нет необходимости, потому что всегда найдется способ заменить блок. Но такой способ не всегда будет правильным с точки зрения удобности и дружелюбности кода.
Рассмотрим простейший пример взаимодействия блока.
Я создал синглтон, содержащий в себе блок, и назвал его просто и понятно DPHelperWithBlock.
DPHelperWithBlock.h
//объявляем тип блока (возвращаемое значение булевая переменная, в качестве параметра строка)
typedef BOOL (^DPResultBlock) (NSString *result);
@interface DPHelperWithBlock : NSObject
//объявляем блок
@property (nonatomic, copy) DPResultBlock resultBlock;
//метод, который вызовет блок
– (void) startBlockWorking;
DPHelperWithBlock.m
#import "DPHelperWithBlock.h"
@implementation DPHelperWithBlock
#pragma mark – Init method
– (id)init
{
if (self = [super init])
{
}
return self;
}
//реализация метода, который вызовет блок
– (void) startBlockWorking{
//вызов блока, передаем параметром строку “Hello!”
_resultBlock(@”Hello!”);
}
@end
Что будет после вызова блока? Куда мы попадем? А попадем мы туда, где находится реализация данного блока. Реализовать его можно в любом классе:
//инициализация объекта
DPHelperWithBlock *myHelperWithBlock = [DPHelperWithBlock new];
//реализация блока
myHelperWithBlock.resultBlock = ^(NSString *result){
//сюда мы попадаем сразу же после вызова блока, переменная result будем содержать “Hello!”
NSLog(@”result = %@”, result);
//возвращаем значение
return YES;
};
//вызываем метод, вызывающий блок
[myHelperWithBlock startBlockWorking];
Таким образом мы создали общение между классами без использование Делегатов.
Исходный код синглтона и пример проекта с его использованием находится на Assembla
Теперь я есть на LinkedIn
Давно искал место, где можно будет вывесить свои проекты и планы на будущее. Мне рекомендовали именно LinkedIn, т.к. он более профессионально ориентирован, нежели другая масса подобных сервисов.
На прошлой неделе я появился на данном сервисе!
Найти меня можно здесь. Добавляйтесь!
Тестируем приложения во всех сетях
Следующая инструкция только для владельцев девайсов с iOS 6.0 или выше.
Довольно часто приходится проверять работоспособность приложения в каждой сети (WiFi/3G/Edge). Для этого приходится тратить сотовый траффик или искать возможность это сделать. Когда у нас под рукой есть WiFi, то можно эмулировать интерфейс абсолютно любой сети.
Как это сделать:
1) Заходим в Настройки
2) Пункт меню “Разработчик”
3) Заходим в ячейку Status раздела “Network Link Conditioner”
4) Здесь мы можем выбрать любую заранее созданную сеть или создать свою. После выбора не забудьте активировать “фильтр” переключателем Enable
У каждого “фильтра” есть свои параметры, такие как:
- Входящая ширина канала (кбит/с)
- Входящая потеря пакетов (%)
- Входящая задержка (милисекунды)
- Исходящая ширина канала (кбит/с)
- Исходящая потеря пакетов (%)
- Исходящая задержка (милисекунды)
- Задержка DNS (милисекунды)
- Протокол (IPv4 и/или IPv6)
- Интерфейс (WiFi и/или Сотовая связь)
Рождественская распродажа от Darkness Production
С 7го января на Рождество Darkness Production дарит Вам скидки и возможность бесплатно скачать приложения! Поздравляем всех!
айСтатистика: $1.99 -> $0.99
айСканер: $0.99 -> FREE
айТвистер: $0.99 -> FREE
iTwister for iPad: $0.99 -> FREE
Poker Cheater: $0.99 -> FREE
Darts Cheat: $0.99 -> FREE
Поездка в офис Apple
На прошлой неделе я, как представитель Альфа-Банка, с коллегами поехал на конференцию по безопасности платформы iOS, которая проходила в офисе компании Apple в Москве на улице Петровка. Сие волшебство было во внушительном здании под названием “Берлинский дом”.
Здание представляет собою солянку из офисов разного рода компаний. Поднявшись на 4й этаж сразу же в глаза бросаются стеклянные стены и двери в фирменном стиле Apple. Там же и находится рецепшн. Там нам выдали бейджики с бланками, которые надо было заполнить к концу конференции. Думаю, если бы и не заполнили, то ничего страшного бы не случилось.
Пройдя немного дальше можно наблюдать ряды со всевозможными линейками компьютеров Mac
По другую сторону баррикады находятся стэнды с мобильными iДевайсами, вот только нового iPhone 5 и iPod Touch 5G среди них не было :(
Всем посетителям предложили закуски
Через минут 5-10 собственно и началась конференция. На ней вначале выступил представитель компании Apple Дмитрий Вешняков.
Сама конференция была закрытой, и фото- и видео-съемка была нежелательна, тем не менее ключевые моменты я отобразил в фотогалерее моего айфона.
Дмитрий рассказывал про нашу нынешнюю эру Post-PC, что будущие технологии за компьютерами Mac. Сразу вспоминается фраза про лягушку и болото, но тем не менее его мнение звучало очень локанично и аргументированно. Оказывается полноценную бизнес-систему можно реализовать, используя только компьютеры Mac, а также iPhone и iPad. Рассказал также про “песочницу” и основу безопасности iOS.
Затем выступал представитель компании АлладинРД, которая занимается технологиями защищенной почты в iPad.
Представили адаптер от 30-пинового коннектора iДевайса к смарт-карте, на которой можно хранить приватные ключи и пароли. Эдакая новая система безопасности, но от многого она не спасет.
Они явно показали, что их продукт работает без джейлбрейка. Да и в целом недолюбливают его.
На мой вопрос поддерживает ли их адаптер новый разъем от iPhone 5, докладчик сказал, что пока это в планах не стоит, и видимо если и появится, то не скоро. К тому же в новом iPhone 5 обнаружили чип, который определяет валидность кабеля, подключенного к коннектору. Поэтому с этим у АлладинРД могут быть проблемы.
Далее тема перешла ближе к разработческой, и компания Крипто-Про предоставила свой фреймворк, который поможет обезопасить личные данные.
И здесь тоже заострено внимание на ненадобности джейлбрейка. По словам выступающего, данный фреймворк написан полностью нативным языком с использованием Apple-овских методов и рекомендаций по безопасности, но по ГОСТу. Дело в том, что во многих российских компаниях отделы безопасности требуют защищенность именно по данному стандарту.
Ниже описаны основные функции данного фреймворка.
В целом конференция вышла довольно увлекательной, несмотря на то, что изначально была нацелена на топ-менеджеров, которые с iOS стакивались лишь по нескольким приложениям.
Мне, как разработчику, который в течение четырех лет несет крест айфоновской благодати, практически все было заранее очевидно, а некоторые темы уже сильно изъезжанные.
Тем не менее остались очень приятные впечатления побывать в таком культовом месте и посмотреть что интересно крупным российским компаниям.
Наибольшее впечатление со всей конференции на меня произвели канапэшки с клубникой и сыром с плесенью :)
Как истинный хипстер, я не мог не сфотографировать. Простите, что без Instagram :)
Collapsar 1.1
Параллельно с релизом iFile вышло пще и обновление Collapsar Mobile до версии 1.1 .
Как и принято считать, что версия, у которой цифра второго разряда увеличилась, несет в себе больше изменений, чем версия, у которой лишь третий разряд увеличился (например, 1.0.1). Эта теория действительна и в этом обновлении 1.1 .
Приложение адаптировалось под новые удлиненные устройства iPhone 5 и iPod 5, а также и iOS 6 в целом.
Появилась возможность смены цвета текст и фона, а также шрифта.
Твиты теперь всегда будут содержать текстовое превью столько, сколько уместится в узкие рамки обычного твита. После текстового превью будет идти картинка с полным текстом и его особенностями (цветами, шрифтом, размером)
Приложение все еще доступно бесплатно в Аппсторе: https://itunes.apple.com/ru/app/collapsar-mobile/id553197797?mt=8
Встречайте – iFile !
Сегодня великий день! Для всех фанатов компании Apple этот день является траурным, т.к. уже год мир живет без великого человека Стива Джобса. Тем не менее именно сегодня Apple пропустили в Аппстор мое приложение – iFile !
Недавно я писал о том, что завершил разработки данного приложения и отправил его на проверку цензоров Apple.
На удивление, iFile пропустили в Аппстор с первого раза, хотя сомнений на этот счет у меня было предостаточно.
Во-первых название приложения Apple могли застолбить за собою, т.к. думаю, что не далек тот час, когда появится нативный файловый менеджер от Apple.
Во-вторых, одним из ключевых функционалов, отличающих iFile от множества аналогов в Аппсторе, является импорт музыки. Через приложение можно буквально “влезть” в медиатеку iPod и импортировать выбранные песни в песочницу iFile в виде mp3-файлов.
В-третьих, Apple могли с легкостью придраться к возрастной категории приложения. Сейчас это 4+, то есть никакого насилия и прочего запретного контента тут быть не может. Однако в iFile есть собственный браузер, который не ограничивает вас в виртуальном пространстве интернета. Обычно на многие файловые менеджера в Appstore ставят рейтинг 17+, и я предполагал, что Apple попросит меня это указать.
Разработка iFile заняла у меня практически год, если не учитывать, что за этот период я занимался и другими проектами. Интерфейс и само восприятие каким должен быть файловый менеджер на iOS менялись несколько раз. В итоге iFile стал таким, каким его можно наблюдать сейчас в Аппстор. Интерфейс завязан на удобном управлении жестами, которые можно кастомизировать как захочется пользователю.
iTunes-Link: http://itunes.apple.com/ru/app/ifile/id495655551?mt=8