Авторские статьи Кодинг приложений под Mac Os

Discussion in 'Статьи' started by kori256, 1 May 2009.

  1. kori256

    kori256 Member

    Joined:
    7 Feb 2009
    Messages:
    49
    Likes Received:
    33
    Reputations:
    6
    Сегодня мы рассмотрим основные приемы кодинга для 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", чтобы запустить нашу программу..
    [​IMG]
    Запустив программу, мы можем увидеть
    [​IMG]

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



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


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


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

    [​IMG]

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

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

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

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

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

    [​IMG]


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

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

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

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

    [​IMG]

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


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

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


    Теперь вернитесь в xcode и выберите File->New File и создайте новый Cocoa -> Objective-C class.
    Дайте новому файлу имя Foo.m
    [​IMG]

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

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

    Изменим Foo.h добавив в него следующий код:
    PHP:
    #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, как показано на рисунке

    [​IMG]


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

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

    [​IMG]

    Теперь свяжем наши действия с объектами..
    Нажмите правой кнопкой мыши на "Label", вы увидите надпись "textField" и кружочек напротив нее..
    Зажмите левой кнопкой мыши этот кружок и перетащите его к window
    [​IMG]

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

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

    [​IMG]

    [​IMG]

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

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

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

    PHP:
    #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 есть и на русском языке качаем скачать

    (с)kori256 специально для xaker.name и antichat.ru
     
    #1 kori256, 1 May 2009
    Last edited: 16 Jun 2009
    4 people like this.
  2. -Hormold-

    -Hormold- Кто, если не ты?

    Joined:
    29 Sep 2007
    Messages:
    418
    Likes Received:
    290
    Reputations:
    44
    Статью почитаю на досуге.
    Хочу сразу заметить, на Хабре видел вакансию Mac программиста с зарплатой больше 100k руб!
    Вот это сейчас актуально. Презедент же юзает Мак :)
     
  3. kori256

    kori256 Member

    Joined:
    7 Feb 2009
    Messages:
    49
    Likes Received:
    33
    Reputations:
    6
    Программирование прог под мак очень перспективное направление, но к моему большому сожалению слаборазвитое в нашей стране.
     
  4. Qwazar

    Qwazar Elder - Старейшина

    Joined:
    2 Jun 2005
    Messages:
    989
    Likes Received:
    904
    Reputations:
    587
    Это наоборот хорошо, значит конкуренция пока маленькая.
     
  5. kori256

    kori256 Member

    Joined:
    7 Feb 2009
    Messages:
    49
    Likes Received:
    33
    Reputations:
    6
    В этом с тобой соглашусь:) ловить момент надо, пока он дан нам.
     
  6. procedure

    procedure Elder - Старейшина

    Joined:
    22 Dec 2007
    Messages:
    527
    Likes Received:
    257
    Reputations:
    46
    визуал студия решает)
    А теперь смотри что я делаю для того чтобы создать такую же прогу.
    File -> new Project -> ConsoleApplication
    Random rand = new Random(System.DateTime.Now.Millisecond);
    Console.WriteLine(rand.Next(500));

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

    Но все равно молодец) Написал генератор) + за подробное описание, детишкам на мак осях должно понравится)
     
    #6 procedure, 1 May 2009
    Last edited: 1 May 2009
  7. kori256

    kori256 Member

    Joined:
    7 Feb 2009
    Messages:
    49
    Likes Received:
    33
    Reputations:
    6
    procedure, спасибо.
     
  8. root_sashok

    root_sashok Elder - Старейшина

    Joined:
    4 Aug 2008
    Messages:
    389
    Likes Received:
    573
    Reputations:
    102
    спасибо, тс, только это не совсем кодинг ;) кодинг в текстовой части, а это... интерфейс-строение :)

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

    geezer.code Elder - Старейшина

    Joined:
    22 Jan 2007
    Messages:
    552
    Likes Received:
    358
    Reputations:
    90
    уже тошнит от obj-C, тошнит от квадратных скобок в первую очередь. синтаксис просто кошмарен :(
    говорила мама иди в хирурги.
     
    2 people like this.
  10. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    Программирование и кодинг, понятия разные.
     
    2 people like this.
  11. geezer.code

    geezer.code Elder - Старейшина

    Joined:
    22 Jan 2007
    Messages:
    552
    Likes Received:
    358
    Reputations:
    90
    а что ты считаешь лучше быть кодером или быть программистом ?
     
  12. Tigger

    Tigger Elder - Старейшина

    Joined:
    27 Aug 2007
    Messages:
    936
    Likes Received:
    527
    Reputations:
    204
    Ого о_0
    100к/мес? Пиздец... Учимся все вместе кодить под МАК, хотя я мак ненавижу и не вижу смысла его юзать =\
     
  13. AllenZ

    AllenZ Шелдон Купер

    Joined:
    18 Aug 2007
    Messages:
    0
    Likes Received:
    259
    Reputations:
    23

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

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

    Spyder Elder - Старейшина

    Joined:
    9 Oct 2006
    Messages:
    1,388
    Likes Received:
    1,209
    Reputations:
    475
    маки не для рабочего использования, имхо
     
    1 person likes this.
  15. REMR

    REMR Elder - Старейшина

    Joined:
    25 May 2007
    Messages:
    33
    Likes Received:
    4
    Reputations:
    0
    смотря что Вы считаете работой)) Аськи конечто там брутом не поломаешь...

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

    Spyder Elder - Старейшина

    Joined:
    9 Oct 2006
    Messages:
    1,388
    Likes Received:
    1,209
    Reputations:
    475
    работу я понимаю под работой коллектива из n человек выполняющих более менее похожую задачу

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

    Qwazar Elder - Старейшина

    Joined:
    2 Jun 2005
    Messages:
    989
    Likes Received:
    904
    Reputations:
    587
    Spyder, знаю по крайней мере 1 конторку, где все на маках. Правда там 5 человек всего работает :)
     
    1 person likes this.
  18. geezer.code

    geezer.code Elder - Старейшина

    Joined:
    22 Jan 2007
    Messages:
    552
    Likes Received:
    358
    Reputations:
    90
    рельсовики?
     
  19. CRL

    CRL Active Member

    Joined:
    21 Oct 2006
    Messages:
    47
    Likes Received:
    102
    Reputations:
    12

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


    P.S. сам сижу под маком года два и боюсь вспоминать о винде.
     
    #19 CRL, 6 May 2009
    Last edited: 6 May 2009
    4 people like this.
  20. AllenZ

    AllenZ Шелдон Купер

    Joined:
    18 Aug 2007
    Messages:
    0
    Likes Received:
    259
    Reputations:
    23

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

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