Mac OS X → Использование Table View
Доброго времени суток!
Уже достаточно давно пытаюсь заставить себя изучить очередной язык/платформу для программирования под Mac OS X/iOS. Интересует именно разработка приложений с нативным GUI, так как консольные приложения можно разрабатывать на чем угодно, начиная с C и C++ и заканчивая модным сейчас Nodejs. Как показала практика, кроссплатформенные фреймворки вроде Qt тут мало подходят, хотя бы потому что не обеспечивают нативный Look and Feel, к которому привыкли пользователи этой ОС.
На хабре есть достаточное количество материалов по языку Objective-C и фреймворку Cocoa. С точки зрения GUI, интерес представляет именно Cocoa, а тут большинство статей ограничивается кнопочками и текстовыми полями. Постараюсь исправить это недоразумение и описать работу с Table View на примере приложения, отображающего список процессов.
Статья не претендует на полноту изложения и абсолютную корректность материала и ориентирована, прежде всего, на начинающих разработчиков. Ошибки и конструктивную критику с радостью выслушаю в комментариях. Кому интересно, добро пожаловать под кат.
Уже достаточно давно пытаюсь заставить себя изучить очередной язык/платформу для программирования под Mac OS X/iOS. Интересует именно разработка приложений с нативным GUI, так как консольные приложения можно разрабатывать на чем угодно, начиная с C и C++ и заканчивая модным сейчас Nodejs. Как показала практика, кроссплатформенные фреймворки вроде Qt тут мало подходят, хотя бы потому что не обеспечивают нативный Look and Feel, к которому привыкли пользователи этой ОС.
На хабре есть достаточное количество материалов по языку Objective-C и фреймворку Cocoa. С точки зрения GUI, интерес представляет именно Cocoa, а тут большинство статей ограничивается кнопочками и текстовыми полями. Постараюсь исправить это недоразумение и описать работу с Table View на примере приложения, отображающего список процессов.
Статья не претендует на полноту изложения и абсолютную корректность материала и ориентирована, прежде всего, на начинающих разработчиков. Ошибки и конструктивную критику с радостью выслушаю в комментариях. Кому интересно, добро пожаловать под кат.
Ruby → Пишем Anime Wallpaper Downloader на MacRuby
Просматривая theotaku.com в поисках интересных обоев для рабочего стола я поймал себя на мысли о том, что неплохо бы написать софт который по тэгам сам автоматически скачивал бы обои вместо меня. Исходя из того что я пользуюcь Мac OS X как основной операционной системой, софт тоже должен быть для этой платформы и желательно иметь Cocoa интерфейс. Писать всё это на Java почему-то не захотелось. Альтернатив конечно было много, но почему-то захотелось попробовать чего-то другого и заодно научится чем-то новому. Сразу же вспомнил о MacRuby и его тесной интеграции с Cocoa. Вооружившись этой идеей, я сразу же полез на http://www.macruby.org/ и скачал последнюю стабильную версию 0.10. После установки я запустил любимый XCode и создал новый проект с названием AnimeWallpaperDownloader
TDD → Юнит-тесты в Cocoa
Ниже описаны основы использования OCUnit — фреймворка для создания юнит-тестов, интегрированного в Xcode. Чтобы наглядно попробовать описываемые вещи, код можно скачать сразу. Писал до эпохи Xcode 4, поэтому картинки немного устарели.Open source → Как свободное ПО способствовало успеху Стива Джобса и Apple
Все мы отмечаем успешную карьеру Стива Джобса и благодарны ему за огромные улучшения в компьютерных интерфейсах и электронных устройствах. Он просто великолепен. Но в то же время Apple — централизованная, контролируемая организация с жёстким надзором за App Store и анонсами новых продуктов. Скрытая причина того, что сейчас недовольные пользователи и приверженцы свободного ПО обратили свою историческую антипатию к Microsoft в сторону Apple — то, что эта компания представляет собой блестящую бизнес-историю в новой эпохе. Поэтому я хочу примирить обе стороны и рассказать, насколько важным является свободное ПО для успеха Джобса и Apple.
Разработка под Apple iOS → Паттерны проектирования для iOS разработчиков. Observer, часть I из песочницы
Вместо предисловия
Прошло уже 17 лет с тех пор, как вышла легендарная книга Банды Четырех, посвященная Паттернам проектирования (Design patterns). Несмотря на столь солидный срок, тяжело оспорить актуальность описанных в ней методик. Паттерны проектирования живут и развиваются. Их применяют, обсуждают, ругают и хвалят. К сожалению, для многих они до сих пор остаются излишней абстракцией.
Обсуждая разные вопросы программирования с коллегами как в жизни, так и на различных ресурсах, довольно часто приходится объяснять важность того или иного паттерна. Так и родилась идея на конкретных примерах показать, насколько их использование может облегчить жизнь программиста. Даже если речь идет о такой платформе, как iOS.
Программирование → Разработка под Mac. Часть 1
Disclaimer
Эта цель данной статьи — открыть цикл, посвященный разработке приложений на языке программирования Objective-C. В данном цикле будут рассмотрены вопросы как создания приложений для OS X, так и вопросы создания мобильных приложений на платформе iOS.
Сразу хотелось бы предупредить, что эта статья, как и все последующие, рассчитана на тех, кто только собирается постигать секреты разработки приложений для Mac. Поэтому, некоторые моменты могут показаться более продвинутым читателям излишне примитизированными и упрощенными. Но, таковы выбранные мной правила игры — ориентир на начинающих разработчиков.
Итак...
Разработка под Apple iOS → Магия в рантайме: инспектируем объекты
Objective-C, в отличие от иных языков, тип указателя у объектов не имеет особого значения во время исполнения при посылке сообщений и используется лишь во время компиляции. Просто выполните и проверьте:
Вы же не сомневались ;-) Мы бы могли использовать любой тип или вообще id.
Во время исполнения же всю нужную информацию получают у class object, через переменную isa. class object, c типом Class (или просто класс) – это синглтон, и поэтому классы у объектов можно сравнить простым сравнением указателей:
Если собрать всё информацию из class object, то несложно восстановить интерфейсы у объектов во время исполнения.
NSNumber *string = [[NSString alloc] initWithString: @"hello"];
NSLog(@"%@", string);
Вы же не сомневались ;-) Мы бы могли использовать любой тип или вообще id.
Во время исполнения же всю нужную информацию получают у class object, через переменную isa. class object, c типом Class (или просто класс) – это синглтон, и поэтому классы у объектов можно сравнить простым сравнением указателей:
[object class] == [object2 class]; Если собрать всё информацию из class object, то несложно восстановить интерфейсы у объектов во время исполнения.
Разработка под Apple iOS → The Cocoa Environment. Part 1 из песочницы
Многие об этом говорят, но какое на самом деле место занимает Cocoa environment в жизни IOS и MacOS, да и вообще что это за такая уличная магия?
Cocoa — это основная среда приложений для Mac OS X (есть еще Carbon, но эта среда используется в основном только для поддержки кода написанного для Mac OS 9.) и единственная среда приложений для операционных систем IOS. Она состоит из набора объектно-ориентированных библиотек, исполняющей среды и среды разработки.
Большинство программ, которые используют пользователи Mac OS X (например, Mail или Safari), а тем более, пользователи IOS, это программы, написанные с помощью Cocoa.
Ну а для создания приложений под Cocoa используется знаменитый Xcode.
Как и во всех средах приложений, Cocoa имеет два мира: мир runtime'а и
Поприветствуйте Cocoa!
Cocoa — это основная среда приложений для Mac OS X (есть еще Carbon, но эта среда используется в основном только для поддержки кода написанного для Mac OS 9.) и единственная среда приложений для операционных систем IOS. Она состоит из набора объектно-ориентированных библиотек, исполняющей среды и среды разработки.
Большинство программ, которые используют пользователи Mac OS X (например, Mail или Safari), а тем более, пользователи IOS, это программы, написанные с помощью Cocoa.
Ну а для создания приложений под Cocoa используется знаменитый Xcode.
Как и с чем?
Как и во всех средах приложений, Cocoa имеет два мира: мир runtime'а и
Разработка под Apple iOS → Делаем Hello World c использованием Cocoa
У многих моих знакомых есть mac, но они никогда не пробовали создать простейшее приложение. Я покажу как создать «hello world» c использованием cocoa. Мы сделаем окошко с кнопкой click me, по нажатию которой появится надпись «Hello World». В этой статье нет теории, только скриншоты с пояснением куда тыкать. Теорию, как это работает, вы можете прочесть в этом же блоге от других авторов. Также я опишу, как исправить баг с Interface Builder, если у вас такой имеется.

Под катом много картинок.
Upd: В комментариях пишут, что на Хакинтоше тоже прекрасно работает xcode.

Под катом много картинок.
Upd: В комментариях пишут, что на Хакинтоше тоже прекрасно работает xcode.
Разработка под Apple iOS → Магия в рантайме: меняем Objective-C метод на лету из песочницы
Читая Mac OS X 10.6 Reference Library, я испытал смешанные эмоции: столько новых возможностей, но если их использовать, программы не смогут запуститься на PowerPC маках, и к тому же не все захотят ставить Снежного Барса, если их вполне устраивает Лео. Самым простым решением кажется не использовать эти возможности, но это значит ограничить себя. Не знаю как вы, но я не люблю, если меня ограничивают. Хочется чтобы программа использовала все преимущества Снежного Барса, но в то же время могла работать на прежней версии Mac OS X. Возможно ли это?