Первые шаги на Mac: новичкам об OS X. Программирование в Mac OS X: пишем для iPhone Полезные функции клавиши «Fn»

в этом топике я покажу как написать простенькое приложение для iPhone с использованием официального SDK. Заполучить его просто, нужны:
1. Intel-based Mac(хотя и на PowerPC тоже работает, но после некоторых телодвижений)
2. iPhone SDK. Я буду писать на beta 2. Последнюю версию можно получить, зарегистрировавшись на developer.apple.com. Beta 2 можно найти в торрентах

HelloHabr

чтобы сильно не напрягать моск сделаем самое простое: приложение будет всего-лишь показывать логотип хабра. Открываем XCode(обязательно в 32-битном режиме) и создаем новое Cocoa Touch приложение:

назовем его HelloHabr и сохраним на рабочий стол.

Мастер создания проэктов уже сделал за нас. Посмотрим на содержимое main.m:
#import

Int main(int argc, char *argv)
{
NSAutoreleasePool * pool = [ init];
//поскольку в айфоне нельзя использовать сборку мусора, то для облегчения жизни используем autorelease pool
int retVal = UIApplicationMain(argc, argv, nil, @«HelloHabrAppDelegate»);
//чтобы запустить приложение, нужно вызвать эту функцию. @«HelloHabrAppDelegate» - класс, которому будет передано управление
;
return retVal;
}

Теперь взглянем на HelloHabrAppDelegate.h:
#import

И на HelloHabrAppDelegate.m:
#import «HelloHabrAppDelegate.h»
#import «MyView.h»

@implementation HelloHabrAppDelegate
//эти директивы означают, что при компияции вместо обращений через., вписать getter"ы и setter"ы
synthesize window;
synthesize contentView;

//функция, делегированная от UIApplication
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// Создаем главное окно
self.window = [[ initWithFrame:[ bounds]] autorelease];
// создаем contentView
self.contentView = [[ initWithFrame:[ applicationFrame]] autorelease];
//добавляем наш contetntView к главному окну, чтобы оно отобразилось
;
// делаем видимым главное окно
;
}

- (void)dealloc {;
;
;
}

Маленькая мат.часть закончена, приступим к написанию приложения. Сохраняем логотип хабра в папку с приложением. Затем перетяем его из папки в папку Resources нашего проэкта в окне XCode:

Теперь добавим в класс MyView новое поле «habrView» типа «UIImageView *», т.е. MyView.h будет выглядеть так:
#import

А теперь определим в классе MyView процедуры init и dealloc:
#import «MyView.h»

@implementation MyView
- (id) initWithFrame:(CGRect)frame {if(self = ) {
//цвет фона - черный
];
//создаем новое объект с изображением логотипа хабра
UIImage *image = ;
//создаем компонент, который и будет показывать логотип
self->habrView = [ initWithFrame:CGRectMake(0, 0, .width, .height)];
;
];

;
//добавляем компонент отображения логотипа хабра на форму
;
}
return self;
}

- (void) dealloc {;
;
}
end

Все. Компилируем, запускаем и получаем то, что и хотели:

А теперь метод создания приложений для ленивых. Dashcode умеет создавать веб-приложения для iPhone и iPod Touch. Открываем Dashcode и в качестве заготовки выбираем RSS. Переходим на вкладку Page Attributes, задаем Page Title:«Harbrahabr RSS», Feed URL: «feed://habrahabr.ru/rss/main/». Затем переходим на вкладку «Harbrahabr RSS»(откроется дизайнер) и меняем надпись «My RSS Feed» на «Habrahabr RSS Feed»:

Нажимаем Run и получаем RSS-ридер Хабра:

В принципе все. Отзывы, пожелания, предложения жду в комментариях

Upd: немного подправил форматирование, код читается получше, но до идеала далеко

Я использую MacBook Pro в течение нескольких месяцев дома, и мне было интересно, есть ли хорошая книга или руководство, которое может помочь мне стать лучшим программистом на Mac. Возможно, Mac-эквивалент Начало программирования Linux . Примечание. Я не ищу ресурс о том, как программировать приложение Mac, вместо этого я ищу более общее руководство по использованию Mac для общей среды разработки.

В качестве фона я являюсь программистом Windows днем. На протяжении многих лет я также занимался некоторыми Linux и BSD, особенно в школе, например, программированием сокетов, графикой, типом типа make install . Дома я буду делать Java, Scala, PHP и т.д. На Mac.

До сих пор я использовал Eclipse, QuickSilver и TextMate. VMWare Fusion, XCode и NetBeans настроены, но я их не использую. Переключатель DVI KVM подключается к реальной клавиатуре, трекболу и монитору. Недавно остался до поздней битвы с MacPorts, и понял, что мне нужен x86_64. Самая большая проблема, с которой я столкнулся, - это настроить PHP. Я не знаю, почему они не поставляются с библиотекой MySQL и GD. В конце концов я понял, что это Googling, и построил расширения из источника. У меня такое ощущение, что я не получил записку и не прочитал базового руководства о том, как стать программистом на Mac, например, как работает вся архитектура. Как программист Windows может быть достаточно продуктивным в Mac OS X?

Изменить . Конкретный тип приложения, который я хочу разработать, на мой взгляд не имеет особого значения. Это может быть Java, Scala, PHP, как я упоминал, или Cocoa, С++ или что-то еще.

Я ищу конкретную книгу, ресурс, советы о том, как быть более эффективным программистом на Mac, желательно что-то помимо "установить XYZ".

6 ответов

Кажется, вам нужен обзор того, как Mac OS X работает на системном уровне, больше, чем переосмысление инструментов и т.д. Если это произойдет, я начну с (основного) Руководство по системной архитектуре Mac OS X от Apple, затем перейдите к Начало работы с Mac OS X , которое должно дать вам достаточно обзор для начала работы.

Из вашего вопроса неясно, что вы намереваетесь делать с вашим программированием, но если вы решите продолжить разработку Cocoa/OS X, я рекомендую Cocoa Программирование для Mac OS X от Aaron Hillegass.

Переделав из Windows в Mac OS X около пяти лет назад, я часто нахожу себя в том же духе. Я просто не могу быть продуктивным в Windows (насколько это возможно, я могу быть продуктивным), как я могу на Mac OS X.

Честно говоря, между Mac OS X и Windows существует множество небольших различий. Я нахожу самую большую причину для людей, которые так думают (обычно это касается только геймеров и разработчиков) заключается в том, что они пытаются использовать Mac как машину Windows. Вам нужно научиться признавать, что вам нужно использовать командный ключ, а не ключ управления и т.д.

Похоже, вы используете Mac, потому что вы должны в противоположность тому, что хотите. Это действительно намного лучше, чем Windows, когда вы привыкаете к ней.

Я думаю, что многие программисты на Windows приходят на Mac и не пытаются его правильно изучить, потому что они самодовольны, думая, что они все знают, потому что они "использовали Windows всю свою жизнь". Я думаю, как только вы обнаружите Spotlight, Expose, "Ярлыки для клавиатуры Mac OS X" и т.д. Вы обнаружите, что вы сами являетесь МНОГО более продуктивным, чем когда-либо были на Windows.... и его действительно забавная ОС для использования.

Ознакомьтесь с некоторыми из лучших приложений Mac, которые вы можете получить и. Вы также можете выполнить поиск "100 лучших приложений для Mac".

Кроме того, я заметил, что вы пытались настроить какой-то веб-сервер непосредственно в Mac OS X. Он поставляется с одним, но если вы собираетесь добавить MySQL и некоторые другие расширения, я бы не пошел по пути MacPorts. Получить VMWare Fusion или VirtualBox (с открытым исходным кодом) и запустить сервер в виртуальной машине. Гораздо чище. У меня есть subversion/trac FreeBSD VM , который обрабатывает мой локальный контроль версий.

Я хотел бы добавить, что если вы в настоящее время не используете Xcode, вы должны обязательно изучить его и использовать его как можно скорее. Это гораздо приятнее IDE для использования, чем Visual Studio, и это сделает вашу жизнь намного проще.

Не забывайте, что вы, вероятно, потратили годы на сайтах справки Windows, вы в малой степени должны сделать это с Mac. Всякий раз, когда у вас есть проблема с использованием Mac, задайте вопрос ServerFault . Мы все более чем готовы помочь вам.

У меня такая же ситуация, как у вас. Я использую Windows для разработки и около года назад купил MBP для дома (когда я перешел в офис). Мне очень трудно получить какую-либо реальную работу на моем MBP. Как-то я привык к среде Windows с двумя экранами. Но пусть это не остановит вас. Несколько программ, которые я предлагаю вам получить, следующие:

  • Передача - Хороший клиент ftp
  • MAMP - запускает веб-сервер почти из коробки. Хорошо для базового развития.
  • Quicksilver - помогает быстро найти приложения.
  • Пространства вместе с жестов (Настройте ваши жесты, чтобы переместиться с одного экрана на другой, я использую три пальца, скользкие).
  • Entourage - для электронной почты
  • Терминал - для ssh (альтернатива шпаклевки) (входит в комплект)
  • Dreamweaver/BBedit/Textmate (все довольно прилично, но я люблю editplus на окнах, а не поклонник IDE).

Я предполагаю, что ваш вопрос заключается не в обучении COCOA, а о более эффективном использовании MAC. Ну, приведенные выше инструменты могут вам помочь.

К сожалению, ваш вопрос не очень ясен относительно того, что вы действительно хотите.

Если вы хотите написать что-нибудь кросс-платформенное, может быть очень полезно иметь виртуальную машину для тестирования. Когда в Linux я всегда использовал VirtualBox , он также работает и с OS X.

Слово

Помните: «В начале было Слово… ». Вот это именно оно. В этой серии статей попробуем разобраться и описать, как можно программировать под Mac OS X , что делать стоит, что не стоит. Ну, и для чего это вообще нужно. Ведь есть масса других систем.

Аргументы…

В пользу каждой операционной системы есть свои доводы. И часто программирование под какую-то из систем - это не вопрос выбора или предпочтений, но часть технического задания. В таком случае спорить (аргументированно) достаточно трудно. И наверное только Mac OS X (и вообще компьютеры Apple) можно хоть как-то отстоять в этом споре за рабочее место.

Пускай нам программировать все-равно на чем. Например, для web. В таком случае чаще всего мы работаем с Apache/MySQL/P(HP/Perl/Python) . Тут проблем нет для любой ОС . Но далее - нужно проверять, как все визуально выглядит в браузерах. И все системы подводит невозможность (легального) запуска Mac OS X для проверки, как будет работать сайт в Safari . А вот наоборот - пожалуйста, сколько угодно. В трех вариантах.

Ладно, пускай даже нам нужно разрабатывать что-то конкретно под Linux/Windows . Вроде бы в этом случае точно нужно выбирать соответствующую платформу, соответствующую ОС . Но постойте, зачем? В виртуальных машинах указанные системы работают блестяще. При этом есть возможность локально эмулировать сеть (запустить сервер в одной VM , клиента в другой), делать снапшоты (сохранять состояние VM на определенный момент времени для последующего отката) и так далее.

И, наконец, никто не запрещает поставить родную Linux или Windows (или обе сразу) на Mac . Обратное сделать нельзя. А вот так - запросто, если нужно.

Есть ли аргументированные минусы у Маков? Да, есть. Патологическая неприязнь. Некоторым нужно что-то конкретное. Например, настраиваемость . Или разворачивание окна по двойному щелчку мыши на заголовке. Вот нужно и все тут. В таком случае Mac OS X категорически противопоказан, ничего кроме отрицательных эмоций в таком случае не получается.

и факты…

А факты простые. На конференциях разработчиков все чаще встречаются MacBook’и и MacBook Pro. На них проводятся презентации, демонстрируются прототипы разработок и финальные релизы.

Mac’и вошли в жизнь разработчиков достаточно плотно. А местами просто покорили их. Например, Java разработка. На конференции JavaOne процентов 60 всех компьютеров - это ноутбуки фирмы Apple .

Ну, довольно лирики. Давайте посмотрим, что вообще предоставляет Apple для программирования и как удобно это все настроить, чтобы пользоваться.

Дайте два!

Есть две простые вещи, которые не всегда очевидны и не всегда легко понимаемы разными разработчиками. Особенно теми, кто создает не конечный продукт (Notepad), а платформу для других (1C).

Во-первых, для создания платформы нужно, чтобы на ней что-то работало. То есть чтобы сторонние программисты могли под нее создавать программы. Вспомним, какая шумиха была по-поводу iPhone SDK… Еще бы, практически никогда еще такие SDK не раздавались просто так. И почти никогда они не были настолько качественными. Или, например, когда разрабатывалась Sony Playstation 3 , DevKit (инструментарий разработчика, Developer Toolkit) для нее был готов гораздо раньше самой приставки. Чтобы к выходу приставки уже могли появиться хотя бы несколько игр. Поэтому инструментарий - это важно. Это архиважно. И в Apple это отлично понимают. Они раздают его бесплатно (к любому Маку на диске с ОС поставляется и SDK) , они его очень активно развивают.

Во-вторых, создание большой платформы - это большой труд многих людей (использующих те же Маки). Люди разные, и инструментарий должен быть разнообразным. С этой целью с Mac OS X традиционно поставляется несколько скриптовых языков, уже настроенных для работы. Собственно, Mac OS X - единственная ОС (сейчас начинают появляться Linux’ы), в которой изначально стоит Java. Поэтому для того, чтобы начать программировать под Mac OS X, не нужно скачивать и устанавливать, например, Python, если вы хотите написать на нем скрипт. Просто садитесь и пишите - оно уже там, уже настроено.

Продолжение следует…