Обновить
27.68

macOS *

Настольная ОС компании Apple

Сначала показывать
Порог рейтинга
Уровень сложности

Objective-C: как работают блоки

Время на прочтение5 мин
Охват и читатели29K
В этой статье я расскажу о расположении блоков (__NSStackBlock__/__NSGlobalBlock__/__NSMallocBlock__), о том, как происходит захват переменных и как это связано с тем, во что компилируется блок.

В данный момент, применение блоков в Objective-C начинается практически с первых дней изучения этого языка. Но в большинстве случаев разработчики не задумываются, как блоки работают внутри. Здесь не будет магии, я просто расскажу об этом подробнее.

Начнем с самого начала, как выглядит блок в Objective-C


Для чего применяются блоки, я расписывать не буду, речь идет не об этом, поэтому давайте сразу рассмотрим интересные моменты на практике.
Читать дальше →

Про использование Visual Studio Code в Unity под OS X

Время на прочтение3 мин
Охват и читатели16K
Привет, Хабр!

Как бы мне этого не хотелось, но интриги в сегодняшней статье не будет. Можно было бы, конечно, выстраивать витиеватые словесные конструкции, играть с синонимами и оттягивать момент истины, но нет — эта статья про использование Visual Studio Code в Unity под OS X. Если точнее, то речь в этом материале пойдет о первичной настройке Unity и привязке редактора VSCode к вашему проекту с помощью плагина dotBunny.

Используйте это как краткое руководство для начинающих, гайд или как там это еще называется. Кроме того, если вы давно хотели попробовать VSCode, но не могли придумать подходящий сценарий, то я сочинил все за вас — просто выполняйте все по шагам.



Осторожно, под катом несколько скриншотов.
Читать дальше →

Objective-C что такое на самом деле метод и self? + runtime

Время на прочтение8 мин
Охват и читатели23K
Как self и _cmd оказываются в методе? Как работает dispatch table и категории? Что такое мета-класс? Сколько на самом деле методов у ваших классов в ARC и в MRC? Как работает swizzling?
Интересно? Добро пожаловать под кат!

ВНИМАНИЕ!

Эта статья не рассчитана на начинающих разработчиков… Приношу свои извинения за то, что не рассматриваю многие моменты, которые должен знать Objective-C разработчик.


Читать дальше →

Восстанавливаем права доступа под Mac OS X — EL Capitan

Время на прочтение2 мин
Охват и читатели36K
При переходе на El Capitan ряд пользователей столкнулся с проблемами прав доступа — неработающее sudo, некорректная timezone, etc…

Корнем зла является урезанный доступ к /private/etc.

Для начала, вам, стоит проверить свой. Откройте Terminal (это можно сделать через Spotlight) и введите ls -la /private.

$ ls -la /private
total 0
drwxr-xr-x@   6 root  wheel   204 Oct  1 10:20 .
drwxr-xr-x   33 root  wheel  1190 Nov  4 15:56 ..
drwxr-xr-x  106 root  wheel  3604 Nov 13 18:04 etc
drwxr-xr-x    2 root  wheel    68 Aug 23 02:28 tftpboot
drwxrwxrwt   14 root  wheel   476 Nov 16 10:55 tmp
drwxr-xr-x   25 root  wheel   850 Nov  4 17:02 var
$ 

Вот так «drwxr-xr-x» и должны выглядеть права на etc. Если они выглядят больше похожими на «drwx-----», то вам к нам.
Читать дальше →

Разработка 2D игр на Windows, Mac OS, Linux и Android без программирования. Часть 2

Время на прочтение9 мин
Охват и читатели43K
image

Привет Хабравчане!

Сегодня я хочу рассказать вам о том, как можно сделать игру без навыков программирования. И да, это не просто красивое и заманивающее название, в созданную игру можно будет играть на Windows, Mac OS, Linux, Android и может быть даже на… iOS? Но об этом позже. Перед началом чтения статьи, я хочу дать вам мое понимание того, что создание игры без навыков программирования – это действительно не круто. Но знаете что еще больше не круто? Тот факт, что вы, владея языками программирования, сутками работаете над кодом, путая ваше рабочее место с постелью, нанимаете дизайнеров, договариваетесь со знакомыми музыкантами, платите рекламщикам, выпускаете свой продукт, а он не окупается! Ну, то есть игру, вашу, в любом случае будут скачивать, и какой-то доход будет капать. Но, будете ли вы довольны тем, какой в итоге получилась ваша игра, и как она продается? К чему я это все говорю? Если у вас в голове живет яркая идея, и вы давно хотите попробовать себя в создании игр, но единственный ваш тормозной элемент, это незнание компьютерных языков, смело пробуйте себя в этом деле. Если же вы владеете языками программирования, и может быть наплодили уже пару не плохих проектов, которые приносят прибыль, данная статья так же будет вам полезна. Я не советую никому здесь бросать все свои знания программирования, и начинать лепить игры в программе, о которой пойдет речь. Мое мнение на этот счет, достаточно простое. С помощью данного приложения, вы сможете создать презентацию вашей игры, затратив намного меньше времени, или как минимум ролик геймплея, который можно будет бросить на YouTube, создать шумиху, получить обратную связь, и работать над игрой, грея себя приятной мыслью, что ваша идея работает, люди ее оценили и ждут. Это не значит, что создание игр, в этой программе, ограничится лишь демо-версиями. Если вы действительно вложитесь душой в это дело, то спокойно сможете создавать полноценные проекты.
Читать дальше →

Перевод соглашения с разработчиком Apple Developer Program License Agreement

Время на прочтение1 мин
Охват и читатели7.9K
Скорее всего вы уже в курсе, что Apple объединила три ранее отдельные программы: iOS, Mac и Safari Developer Program в одну, обновленную и расширенную Apple Developer Program.

Я предлагаю всем заинтересованным принять участие в переводе нового Соглашения на translatedby.com: translatedby.com/you/apple-developer-program-license-agreement-with-schedule-2/into-ru/trans

Переводить все с нуля необязательно, можно использовать предыдущий перевод на русский язык iOS Developer Program License Agreement + Schedule 2: drive.google.com/open?id=0B092pX2T-KtiaUNoQWdUSkgxYjg. Лично я действую так: захожу на сайт text-compare.com для нахождения отличий старой и новой версий каждого абзаца соглашений. Далее использую старую версию перевода и вношу в нее необходимые изменения.

Примечание: текст оригинала снабжен markdown-разметкой, которую также необходимо сохранить в переводе.

После 100% готовности перевода он будет опубликован на www.gitbook.com

Swift + VK.API, или история о SwiftyVK

Время на прочтение9 мин
Охват и читатели28K


Сегодня я хочу вам рассказать о том, как однажды познакомился с языком программирования Swift и решил написать на нем приложение для социальной сети ВКонтакте под OSX (которое, к сожалению, до сих пор не закончено). С какими подводными камнями мне пришлось столкнуться при обуздании, на тот момент, нового языка и скрещивании его с VK.API. Поделиться с общественностью результатом того, во что именно все это вылилось и попытаться обосновать, зачем нужно было придумывать очередной велосипед в виде библиотеки для работы с VK.API.
Если кому-то это интересно, то добро пожаловать под кат.
Читать дальше →

Установка Intel RealSense SDK на компьютеры Mac

Время на прочтение4 мин
Охват и читатели5.9K


Для участия в семинарах и хакатонах, посвященных технологии Intel RealSense, некоторым разработчикам необходимо установить пакет Intel RealSense SDK на ноутбуки с операционной системой Mac OS. Мы заметили, что иногда это занимает больше времени, чем хотелось бы, поэтому решили опубликовать данное пошаговое руководство, показывающее, как запустить образцы приложений SDK с камерой Intel RealSense на компьютере Mac с помощью Boot Camp.
Читать дальше →

Perspex — кросплатформенный UI-фреймворк с XAML и биндингами

Время на прочтение2 мин
Охват и читатели28K
TL;DR: кроссплатформенный клон WPF. От других попыток сделать нечто с XAML-ом выгодно отличается наличием полностью своей системы отрисовки со сменными бакэндами (сейчас поддерживается Direct2D и Cairo). В наличии инспектор, дизайнер (см. видео). Биндинги сделаны на стероидах под названием ReactiveExtensions (старый стиль тоже можно использовать). Умеет работать с Windows/Linux/MacOS, поддержку мобильных платформ планируется добавить в начале следующего года посредством отрисовки через MonoGame.


Читать дальше →

Screentendo — генерация уровней для Super Mario Bros на основе содержимого экрана

Время на прочтение3 мин
Охват и читатели20K
image

Screentendo – это приложение для настольных компьютеров, которое превращает выделенную область экрана в играбельный уровень для игры Super Mario Bros.

Я раньше не делал приложений для Cocoa app и не использовал Sprite Kit, и это стало для меня отличным упражнением. Исходный код доступен по ссылке.



Как это работает?


При запуске приложения появляется полупрозрачное окно, которое можно двигать и изменять его размер. После размещения окошка над какой-то областью экрана клик внутри него приведёт к тому, что приложение создаст уровень на базе контента, находящегося под ним.

У Screentendo есть два основных этапа работы: обработка картинки для определения структуры выбранного района, и создание уровня.
Читать дальше →

Мультиплатформенный аудио плеер на C++ и OpenAL

Время на прочтение3 мин
Охват и читатели36K
Так сложилось, что большую часть жизни я пользовался Windows и привык воспроизводить аудио файлы с помощью Winamp. Он очень удобно интегрируется с командной строкой — запустил любой аудио файл и готово. После перехода на Linux и OS X (в основном по работе, но Mac использую и дома вместе с виндой) возникла острая необходимость найти альтернативу. Перепробывал большое количестко крафических плееров. Основная их проблема — это отсутствие нормальной интеграции с командной строкой и часто поддержка только одной из платформ: либо Linux, либо OS X. С консольными плеерами ситуация получше: mpg123 и mpg321 практически идеально делают именно то, что надо. Вот только появилось одно большое «но». Они не умеют играть .ogg и трекерную музыку (.it, .mod, .xm, .s3m и прочие), которой тоже накопилось достаточно и расставаться с ней совершенно не хотелось.
Читать дальше →

CocoaHeads 24 июля в Rambler&Co

Время на прочтение1 мин
Охват и читатели2.7K
image

Очередная встреча CocoaHeads пройдёт 24 июля в 19:00 в офисе компании Rambler&Co, и на ней вы услышите четыре доклада.
Читать дальше →

Ближайшие события

Как победить Excluded Constraints с помощью RubyGem

Время на прочтение3 мин
Охват и читатели4.8K


Во время разработки iOS/OSX-приложений непременно приходится использовать Interface Builder и Auto Layout. В приложениях со сложными интерфейсом и в приложениях, находящихся в разработке достаточно давно, часто появляется проблема с большим количеством «исключенных констрейнов». Storyboard грузится необоснованно долго, а во время перехода между сценами можно успеть сходить за кофе.

Но, казалось бы, интерфейс всех контроллеров такой же незамысловатый, как и в релизе полгода назад. Что же случилось? Тем, кто использовал Size Classes, сразу понятно, что интерфейс — не такая простая штука, как кажется. Он ведет себя по-разному в разных ориентациях и на разных дисплеях. Делает он это, потому что некоторые constraints применяются только в определенной ситуации.

Это значит, что в остальных ситуациях эти constraints не используются. У Xcode Interface Builder есть особенность, которая помогает при разработке сложных интерфейсов и мешает при разработке простых. Если добавить constraint к какому-то UIView и затем удалить его из Xcode Inspector (а чаще всего это — самый удобный путь), Xcode не удалит его, а лишь сложит в список неиспользуемых на случай, если понадобится для другого дисплея или ориентации.

Иногда, если развернуть все группы constraints, можно ужаснуться происходящему в storyboard-файле:


Не хотите наблюдать подобное? Добро пожаловать под кат!
Читать дальше →

XARA-уязвимости в OS X и iOS

Время на прочтение4 мин
Охват и читатели14K
Сегодня в свет вышел отчет группы специалистов по информационной безопасности, посвященный исследованию атак, основанных на способах коммуникации между собой различных приложений на OS X и iOS — (XARA, от Cross-App Resource Access). Для тех, кому лень читать все 26 страниц оригинальной статьи, я решил подготовить ее небольшой обзор.

Для начала, два коротких тезиса:
  • Во-первых, большая часть обнародованных уязвимостей касается OS X. В iOS все намного спокойнее.
  • Во-вторых, все на самом деле достаточно печально.

Читать дальше →

Swift 2.0 будет с открытым кодом в конце года

Время на прочтение1 мин
Охват и читатели23K
8 июня на проводимом ежегодно WWDC компания Apple анонсировала новую версию языка Swift 2.0



Как написано в блоге Swift и на странице для разработчиков на Swift, новая версия получила более высокую производительность, новое API обработки ошибок, улучшения синтаксиса языка, а также функцию проверки доступности функций Swift для целевых ОС.

На мой взгляд, самое интересное – Apple открывает код Swift. Да, Swift 2.0 — это Open Source язык программирования.
Читать дальше →

Что бы вы выбрали? Упражнение по выбору приложения из App Store

Время на прочтение3 мин
Охват и читатели12K
Существует старый и очень известный слоган Apple «There’s an App for that» («для этого есть приложение»), поддерживающий идею, согласно которой люди могут найти и скачать приложение для решения любой проблемы. В App Store уже более 1,2 млн приложений и их количество продолжает расти. Каталог приложений Apple — великолепный пример правильной системы дистрибуции программ и контента. Приложения известных компаний имеют миллионы загрузок в первые же часы после попадания в каталог. Вопрос в том, как пользователи могут найти ваше приложение на бескрайних просторах App Store? В этой публикации мы попытаемся коротко рассказать об основных факторах, которые влияют на выбор пользователя.
Читать дальше →

Да начнется unit-тестирование (Objective-C)

Время на прочтение10 мин
Охват и читатели36K
Данная статья посвящена вопросу тестирования в рамках Objective-C используя Xcode 6. Рассматриваются стандартная библиотека для тестирования и сторонняя библиотека OCMock. Опытные разработчики, возможно, не найдут здесь слишком полезной информации, тем же, кто недавно встал на этот путь — статья откроет необходимые базовые знания по написанию unit-тестов на языке Objective-C.

Для основы тестирования просьба обратиться сюда.
Для основы unit-тестирования сюда.

А теперь мы начнем изучение unit-тестирования в рамках Objective-C.
Читать дальше →

Циклические контейнеры в Objective-C

Время на прочтение2 мин
Охват и читатели7.8K
Некоторое время назад я написал этот код:

NSMutableArray *environments = [NSMutableArray new];
for (NSString *key in [dictionary allKeys]) {
    XCCEnvironment *environment = [[XCCEnvironment alloc] initWithName:key
                                                            parameters:dictionary[key]];
    [environments addObject:environments];
}
return environments;

Заметили проблему? Я — нет.
Читать дальше →

Видео от пользователя: MacOS внутри ReactOS

Время на прочтение1 мин
Охват и читатели26K
image

Под катом спрятано видео, на котором один из пользователей нашего проекта демонстрирует работу приложений для MacOS внутри ReactOS при помощи Mini vMac.
Читать дальше →

Вклад авторов