PDA

Просмотр полной версии : Кодинг приложений под Mac Os


kori256
01.05.2009, 01:30
Сегодня мы рассмотрим основные приемы кодинга для Mac OS.
Мы будем писать самый обыкновенный генератор случайных чисел.

Для кодинга нам понадобится Mac OS X Developer Tools, который вы можете найти на диске вместе с Mac Os или
скачать в интернете. Вы можете, конечно, использовать весь потенциал "Mac OS X Developer Tools", но, в основном, вам понадобится только два приложения: Xcode и Interface Builder.

Итак, открываем xcode.
Наверху мы видим заголовок File. Нажимаем и создаем новый проект File -> New project.

Далее у нас есть выбор типа проекта, мы выберем Cocoa Application.

Затем пишем имя проекта, например, "RandomApp"


Итак, мы видим перед собой "Скелет" нашей будущей программы.. Нажмем "Build and Go", чтобы запустить нашу программу..
http://dnislavy.sk6.ru/image/4.jpg
Запустив программу, мы можем увидеть
http://dnislavy.sk6.ru/image/5.jpg

Основная функция
Нажмите Editor, чтобы можно было удобнее работать с кодом программы.
Слева вы можете увидеть пункт Resources, в котором есть файл MainMenu.nib.
Дважды щелкните по нему, чтобы открыть в Interface Builder



Interface Builder позволяет создавать и редактировать объекты пользовательского интерфейса (например, для окон и
кнопок), и сохранять
эти объекты в файл. Вы также можете создавать пользовательские классы и связи между
ними, или стандартный пользовательский интерфейс объектов.


Создание Интерфейса.


Откройте Library в пункте window -> Library.

http://dnislavy.sk6.ru/image/7.jpg

Во вкладке Cocoa вы можете найти пункт Views & Cells. Нажав на неё, вы можте увидеть множество объектов.

Нас интересует "Rounded Rect Button". Зажмите объект левой кнопкой мыши и перетащите его в окно нашей будущей

программы. Двойной клик по кнопке позволит вам изменить заголовок этой кнопки. Дайте ему название "Seed random

number generator using time" (вообще то можно любое )
Создайте под этой кнопкой еще одну и дайте ей название "Generate random number".
Затем, найдя в главе "Views & Cells" подглаву "Input & Values" перейдем в нее и найдем там "Label". Также

переместим его в наше окно.
У нас должно появиться что то вроде этого

http://dnislavy.sk6.ru/image/8.jpg


Сделаем окно меньше, внизу есть ползунок, чтоб было красивее.

И центрируем текст "Label".Чтобы его центрировать заходим в "Tools" и находим там "Attributes Inspector".

Нажимаем на "Label" И в свойствах жмем кнопку центрирования.

У нас должен получиться вот такой интерфейс

http://dnislavy.sk6.ru/image/9.jpg

Все, с интерфейсом будущей программы мы закончили.


В Objective-C, каждый класс определяется двумя файлами: файлом заголовка и файлом реализации.

Файл заголовка объявляет переменные и классы. Файл реализации определяет то, что эти методы делают.


Теперь вернитесь в xcode и выберите File->New File и создайте новый Cocoa -> Objective-C class.
Дайте новому файлу имя Foo.m
http://dnislavy.sk6.ru/image/10.jpg

Файлы Foo.h и Foo.m появятся в вашем проекте. Если они не появляются в группе Classes, перетащите их
туда вручную.

В Foo.h, вы будете добавлять, например переменные и методы класса.

Изменим Foo.h добавив в него следующий код:

#import <Cocoa/Cocoa.h>
@interface Foo : NSObject {
IBOutlet NSTextField *textField;
}
-(IBAction)seed:(id)sender;
-(IBAction)generate:(id)sender;
@end



Сохраните Foo.h


Вернемся к Interface Builder.

Заходим в Library. В Cocoa заходим в Objects & Controllers и выбираем Object (NSObject).

Перетаскиваем его в MainMenu.nib, как показано на рисунке

http://dnislavy.sk6.ru/image/12.jpg


В Identity Inspector, установите класс этого файла как Foo. (Ваши действия должны появиться в Identity Inspector.

Если они не появятся, то еще раз проверьте файл Foo.h на наличие ошибок).

http://dnislavy.sk6.ru/image/13.jpg

Теперь свяжем наши действия с объектами..
Нажмите правой кнопкой мыши на "Label", вы увидите надпись "textField" и кружочек напротив нее..
Зажмите левой кнопкой мыши этот кружок и перетащите его к window
http://dnislavy.sk6.ru/image/14.jpg

Повторите то же самое и для кнопок "Seed random number generator using time" и "Generate random number" как

показано на рисунках

http://dnislavy.sk6.ru/image/15.jpg

http://dnislavy.sk6.ru/image/16.jpg

сохраним и снова возвратимся в xcode.

Теперь изменяем файл Foo.m

вставим в него следующий код..


#import "Foo.h"
@implementation Foo
- (IBAction)generate:(id)sender
{
// Generate a number between 1 and 100 inclusive
int generated;
generated = (random() % 100) + 1;
NSLog(@"generated = %d", generated);
// Ask the text field to change what it is displaying
[textField setIntValue:generated];
}
- (IBAction)seed:(id)sender
{
// Seed the random number generator with the time
srandom(time(NULL));
[textField setStringValue:@"Generator seeded"];
}
@end


сохраняем все и теперь пытаемся запустить. Жмем Build and Go, если у нас появилось сообщение об ошибке, то надо

еще раз все проверить, особенно файлы Foo.h и Foo.m. Если сообщения нет, и программа запустилась, значит все нормально и работает!!

Удачи вам всем..


16.06.2009 Теперь замечательная книга Become An Xcoder есть и на русском языке качаем скачать (http://narod.ru/disk/9913125000/BecomeAnXcoder.Russian.pdf.html)

(с)kori256 специально для xaker.name и antichat.ru

-Hormold-
01.05.2009, 02:07
Статью почитаю на досуге.
Хочу сразу заметить, на Хабре видел вакансию Mac программиста с зарплатой больше 100k руб!
Вот это сейчас актуально. Презедент же юзает Мак :-)

kori256
01.05.2009, 02:09
Программирование прог под мак очень перспективное направление, но к моему большому сожалению слаборазвитое в нашей стране.

Qwazar
01.05.2009, 02:42
Программирование прог под мак очень перспективное направление, но к моему большому сожалению слаборазвитое в нашей стране. Это наоборот хорошо, значит конкуренция пока маленькая.

kori256
01.05.2009, 02:52
Это наоборот хорошо, значит конкуренция пока маленькая.

В этом с тобой соглашусь:) ловить момент надо, пока он дан нам.

procedure
01.05.2009, 03:57
визуал студия решает)
А теперь смотри что я делаю для того чтобы создать такую же прогу.
File -> new Project -> ConsoleApplication
Random rand = new Random(System.DateTime.Now.Millisecond);
Console.WriteLine(rand.Next(500));

В 2 строчки уложился)
В win приложении эти 2 строчки нужно кинуть в обработчик события по клику)

Но все равно молодец) Написал генератор) + за подробное описание, детишкам на мак осях должно понравится)

kori256
01.05.2009, 08:22
procedure, спасибо.

root_sashok
04.05.2009, 16:23
спасибо, тс, только это не совсем кодинг ;) кодинг в текстовой части, а это... интерфейс-строение :)

а маки да, они продвигаются еще как. у президента продукция Apple, кодинг под мак нехило стоит

geezer.code
04.05.2009, 16:43
уже тошнит от obj-C, тошнит от квадратных скобок в первую очередь. синтаксис просто кошмарен :(
говорила мама иди в хирурги.

De-visible
04.05.2009, 18:44
Программирование и кодинг, понятия разные.

geezer.code
05.05.2009, 00:01
Программирование и кодинг, понятия разные.
а что ты считаешь лучше быть кодером или быть программистом ?

Tigger
05.05.2009, 00:35
Ого о_0
100к/мес? Пиздец... Учимся все вместе кодить под МАК, хотя я мак ненавижу и не вижу смысла его юзать =\

AllenZ
06.05.2009, 15:55
Ого о_0
100к/мес? Пиздец... Учимся все вместе кодить под МАК, хотя я мак ненавижу и не вижу смысла его юзать =\


Из-за чего ты его ненавидешь?

Я мак юзал много, очень понравилась, винда курит нервно в сторонке, это моё личное мнение. Будущие за Apple безусловно!

Spyder
06.05.2009, 17:06
маки не для рабочего использования, имхо

REMR
06.05.2009, 19:09
маки не для рабочего использования, имхо
смотря что Вы считаете работой)) Аськи конечто там брутом не поломаешь...

А например в iWork одно удовольствие работать

Spyder
06.05.2009, 19:21
работу я понимаю под работой коллектива из n человек выполняющих более менее похожую задачу

если для тебя работа - брут асек, мне тебя жаль(

Qwazar
06.05.2009, 19:41
Spyder, знаю по крайней мере 1 конторку, где все на маках. Правда там 5 человек всего работает :)

geezer.code
06.05.2009, 19:48
Spyder, знаю по крайней мере 1 конторку, где все на маках. Правда там 5 человек всего работает :)
рельсовики?

CRL
06.05.2009, 21:14
маки не для рабочего использования, имхо


Для множества людей в мире работа - это печатать в Word или таблички делать в E. Так что разницы никакой. И вообще, для мака есть тот же виндоус софт, только часто лучше.


P.S. сам сижу под маком года два и боюсь вспоминать о винде.

AllenZ
06.05.2009, 21:45
Spyder, знаю по крайней мере 1 конторку, где все на маках. Правда там 5 человек всего работает :)


многие дизайн-студии сидят только на маках.

Насчёт работы, тот же майкрасофт офис, намного красивее и удобнее под маком, не говорю про iWork.

root_sashok
06.05.2009, 21:53
+1
на маках сидят крупные дизайн студии, а также видео и аудиостудии

metaN™®
06.05.2009, 22:43
Spyder, знаю по крайней мере 1 конторку, где все на маках. Правда там 5 человек всего работает :)
Приемная президента :eek:

Qwazar
07.05.2009, 01:04
рельсовики? Неа, пхп + мускуль, короче стандартный набор. (Кстати сервис в рунете довольно известный)

gisTy
08.05.2009, 00:46
кодинг для блондинок.. нажмите эту кнопочку, напишите то-то... ты бы еще видео урок выложил чтоле...

nerezus
08.05.2009, 01:16
визуал студия решает) Не проще будет, если использовать подобные технологии.
А в тобой приведенном стиле и на Qt можно так сделать.

nerezus
08.05.2009, 01:18
не говорю про iWork. Там даже редактора формул нету.

кодинг для блондинок.. нажмите эту кнопочку, напишите то-то... ты бы еще видео урок выложил чтоле... А как иначе? Листинги выкладывать? А то, что 90% работы тут "мышкой", не учитываешь?

gisTy
08.05.2009, 01:36
Там даже редактора формул нету.

А как иначе? Листинги выкладывать? А то, что 90% работы тут "мышкой", не учитываешь?
ну а какой толк выкладывать статью "как я подвигал мышкой"?

Qwazar
08.05.2009, 12:16
ну а какой толк выкладывать статью "как я подвигал мышкой"? Ну вообще толк имхо есть, чтобы одним глазком глянуть как в принципе кодят под мак. Мне было интересно глянуть.

kori256
20.05.2009, 22:36
Наконец скачал твой виджет.. щас посмортрю..

scood
21.05.2009, 01:19
про програмирование под мак имхо в посте сказано очень мало. разве что основы работы с интерфейсом xcode. а ведь главное понимать Obj-C - обьектная модель там отличается от привычного большинству С++.

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

kori256
21.05.2009, 20:09
scood, +1. Это всего лишь самый простенький пример.. для ознакомления со стрктурой языка и интерфейсом.

nerezus
22.05.2009, 10:52
ну а какой толк выкладывать статью "как я подвигал мышкой"? Потому что это неочевидно. А ты в этом не шаришь, как я понял?

nerezus
22.05.2009, 13:41
ТС, из какой книги статья перепечатана, признавайся.

P.S. По мануалу сделал. программку для айфона(принцип те же). Полезно оказалось.
До этого пробовал 1 раз, ен вкурил.

nerezus
22.05.2009, 13:55
nerezus да какая статья, тут все сам сделал. да и что там делать 3 щелчка то А откуда такие скрины?

kori256
22.05.2009, 23:28
nerezus, книженция называется "COCOA PROGRAMMING FOR MAC OS (Third Edition)".. Книга существует только на инглише.. Но статья не перепечатана. Это адаптированный перевод.. писал сам. оно и по стилю видно.. А картинки действительно взял оттудова.. Сам долго разбирался.. у меня версия xcode другая.. а различаются кардинально.

P.S. Книга офигенная кстати.. скачай, не пожалеешь..
Под айфоном тоже хочу попробовать, сейчас качаю iphone sdk.

nerezus
23.05.2009, 16:36
nerezus, книженция называется "COCOA PROGRAMMING FOR MAC OS (Third Edition)".. Книга существует только на инглише.. Но статья не перепечатана. Это адаптированный перевод.. писал сам. оно и по стилю видно.. А картинки действительно взял оттудова.. Сам долго разбирался.. у меня версия xcode другая.. а различаются кардинально. Ну я про это и говорю. Только на будущее такой род деятельности называется пересказом ;)

А под мак я бы юзал Qt, а mac-only софт не нужен )

mnglw
06.06.2009, 04:10
Да хз, честно. Не могу никак определиться, стоит под мак начинать писать, или нет?

Тяготею к Си++, Асму и Фре, и с ними расставаться ой как неохота. С другой стороны, то что у меня сейчас XCode установлен только из-за того, что у него в комплекте GCC - тоже маразмом пахнет, хотя все наверное так и делают.

Вот скажите мне, господа, есть-ли веская мотивация в пользу технологий мака, если есть, то какая?

Да-да-да, вопросы откровенно тупые, но чем проще вопрос, тем порой сложнее найти на него ответ.
Сейчас у меня стоит выбор: FreeBSD/*NIX+C++/Qt или Apple MacOSX+Cocoa и никак к одному решению не приду. Не подскажите?

зы: только убедительная просьба писать ТОЛЬКО по конкретному вопросу, мне нафиг неинтересно любое мнение обо мне или том, как я собираюсь это делать. Бывает, редко, вот сейчас как раз такой момент возник, буду рад услышать ваши конструктивные мнения.

kori256
06.06.2009, 16:14
Вот скажите мне, господа, есть-ли веская мотивация в пользу технологий мака, если есть, то какая?


Президент использует мак:) гыы

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

root_sashok
07.06.2009, 17:04
Ну я про это и говорю. Только на будущее такой род деятельности называется пересказом ;)

А под мак я бы юзал Qt, а mac-only софт не нужен )
ну блин, извини, если ты сделаешь QT софт на маке это еще не значит что он пойдет на винде/лине

root_sashok
07.06.2009, 17:05
Президент использует мак:) гыы

На мой взгляд мак в России в скором времени начнет бурно развиваться, следовательно и программы нужны будут.
под мак очень много программ, как профессиональных так и любительского уровня :)

kori256
16.06.2009, 23:37
Ура! радуемся все!! теперь книга Become An Xcoder есть и на русском языке:) качаем скачать (http://narod.ru/disk/9913125000/BecomeAnXcoder.Russian.pdf.html)

kori256
16.06.2009, 23:44
Обновил статью, добавил ссылку в статью

m1lo
17.06.2009, 00:31
FreeBSD/*NIX+C++/Qt или Apple MacOSX+Cocoa и никак к одному решению не приду. Не подскажите?

на самом деле. первый вариант перспективнее чем второй!! почему? доводов много

- freeBSD очень распространненая система, которую между прочим потихоньку некоторые начинаю на десктоп ставить(звучит бредово но это так)
- перспектива программирования под никс огромна, с каждым годом линукс все более вытесняет маздай

по поводу же мак оси, да она красивая, да она очень крассивая, по большей части она стоит на "яблочных" компах , хотя в редких случаях встречается и на других машинах!!, она распространяется не так резво как ныне линукс!

так что мой совет вам, FreeBSD/*NIX+C++/Qt - наинучший вариант!

mnglw
19.06.2009, 01:14
freeBSD очень распространненая система, которую между прочим потихоньку некоторые начинаю на десктоп ставить(звучит бредово но это так)

Звучит достаточно ясно, чтобы вашу мысль понять.
На десктоп я ее поставил, она заработала и заработала отлично на MacBook, жалоб нет.

Смущают вот какие вещи: Первое, что ввело в некоторый ступор - это девиз сообщества, под которым ее ставят на десктопы.

С bsdportal.ru цитирую: "мы не ищем легких путей", "мы ищем трудности, чтобы потом их решать" и все в таком духе.

Через несколько часов, завершив установку этой системы на лаптоп, я до глубины души понял, о чем они говорили. Дальше были устройства, над ними возился еще неделю, в частности, смущал тот факт, что демон энергосбережения консоли совсем не понимал, когда ноутбук засыпает хардварно, при закрытии крышки или 95% разряде аккумулятора. И, соответственно, пробудить систему от такого сна было сложно. (точнее - в иксах первый случай работал, а вот второй - нет)

Ну не суть. Фря дико понравилась т.к. мое личное мнение - она много лаконичней всех перепробованных линуксов.

Но, ссылаясь, опять-же на сообщество, почти цитирую общее мнение - поддежка устройств отстает от прогресса. Не хватает финансирования, рабочих рук, которые смогли бы постоянно в нужном объеме писать драйвера, особенно - для новых мультимедийных платформ. А это для нас значит, что новые карточки от nVidia (про ATi вообще молчу), которая и так уже открывает стандарты и всячески содействует Open Source сообществу, полноправно поддерживаться начнут с очень большим опозданием.

И это правильно, ведь разработчикам главное - уж точно не игровой сегмент. А мы опять остаемся со статьями "как я запустил это устройство", некоторым из которых уже давно пора давать статус руководства и печатать в книгах.
Да ладно печатать, если бы их хотя-бы исправно переводили. У меня с английским проблем нет, но читать по 10 часов подряд английские статьи - весьма трудоемкое занятие.

по поводу же мак оси, да она красивая, да она очень крассивая, по большей части она стоит на "яблочных" компах , хотя в редких случаях встречается и на других машинах!!, она распространяется не так резво как ныне линукс!

Так вот вопрос весь в том, насколько резво?
Друзей всех подсадил, а тут такой психологический аспект, что "уж когда друг-полный чайник говорит, что линукс - простая система..", - это действительно работает.
Сложность в том, что его надо развести на нормальную постановку задачи, чтобы были _все_ пункты вроде "видео", "музыка", "вконтакте", "просмотр изображений", "вот такие с ними манипуляции", "аська", "торрент", "квейк", "редактирование вот этих типов файлов", "электронная почта", "флеш плеер" и все-все-все. Вот это реально долго настраивать, и надо выполнить "на отлично", чтобы не вякали))

И в итоге дилемма - соотношение сложности записаться в ряды apple-программистов (вообще не представляю какая сложность), или-же уповать на поиск работы в *nix компаниях, где под них софт пишут и за это деньги платят (тоже полная пространность где такие компании найти, да еще чтобы нормально платили)

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

зы: за книгу спасибо, освою в скором будущем, потом отпишу.

root_sashok
26.09.2009, 13:39
Не нравятся мне ваши скриншоты, господа. Посему, залью (http://rghost.ru/486923) новые, мною переснятые.