Your SlideShare is downloading. ×
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Кратко о Mac OS X
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Кратко о Mac OS X

743

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
743
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Программирование Mac OS
  • 2. План
    • История возникновения
    • Архитектура
    • Инструменты разработки
    • Язык
    • Библиотеки
  • 3. Steven Jobs & Stephen Wozniak
  • 4. История Apple
    • 19 76 – появился Apple I
    • 19 77 – выпуск Apple I I
    • 1979 – начинается работа над Macintosh
    • 1982 – годовой доход превышает $1 млрд
    • 1984 – в продажу выходит Macintosh
    • 1985 – Jobs уходит и основывает NeXT
    • 1991 – первый ноутбук ( PowerBook )
    • 1992 – IBM и Apple создают PowerPC
    • 1995 – годовой доход превышает $11 млрд
    • 1996 – Apple покупает NeXT за $430 млн
  • 5. История Apple
    • 1997 – Jobs возвращается
    • 1998 – первый i Mac
    • 200 0 – Aqua интерфейс
    • Март 2001 – Apple выпускает Mac OS X (Cheetah) и первый iPod
    • Сентябрь 2001 – Mac OS 10.1 (Puma)
    • Август 2002 – Mac OS 10.2 (Jaguar)
    • Октябрь 2003 – Mac OS 10.3 (Panther)
    • Апрель 2005 – Mac OS 10.4 (Tiger)
    • Октябрь 2007 – Mac OS 10.5 (Leopard)
    • Август 2009 – Mac OS 10.6 (Snow Leopard)
  • 6. Mac OS 1 (1984)
  • 7. Mac OS 6 (1988)
  • 8. Mac OS 7 (1991)
  • 9. Mac OS 7.5 (1994)
  • 10. Mac OS 8.5 (1998)
  • 11. Mac OS 9 (1999)
  • 12. Mac OS 10 (2001)
  • 13. Mac OS 10.6 (2009)
  • 14. Hackintosh (2006)
    • Mac OS 10.4.4 и старше
    • Патчи к XNU
  • 15. MessagePad
  • 16. MessagePad & iPhone
  • 17. Особенности Mac OS X
    • Darwin: XNU + набор драйверов и утилит
    • XNU: ядро Mach + BSD API
    • Фреймворки Cocoa, Carbon и Java
    • Технологии QuickTime, Quartz и OpenGL
    • Тема Aqua
  • 18. Архитектурная модель Aqua Darwin Quartz OpenGL QuickTime Carbon Cocoa Java
    • GUI
    • Фреймворки
    • Технологии
    • Ядро
  • 19. XNU = Mach + BSD
    • Mach:
    • - виртуальная память
    • - RPC
    • - вытесняющее планирование и SMP
    • - защита памяти
    • - IPC
    • BSD:
    • - POSIX интерфейс
    • - сигналы
    • - стек TCPIP
    • - VFS
  • 20. И еще раз…
  • 21. Toolkit
    • GCC
    • GDB
    • Make
    • Libtool
    • Otool
  • 22. Компиляция из командной строки
  • 23. Bundle
  • 24. XCode
  • 25. Interface Builder
  • 26. developer.apple.com
  • 27. Objective-C
    • Надмножество С
    • Очень простой язык, но новый синтаксис
    • Одиночное наследование, единый базовый класс
    • Есть понятие интерфейса (абстрактный класс)
    • Методы бывают либо виртуальные либо статические
    • Слабо типизирован
  • 28. Objective-C
    • Новые типы:
    • - анонимный объект ( id )
    • - класс (Class)
    • - селектор (SEL)
    • Синтаксис объявления и определения класса
    • Синтаксис вызова метода
  • 29. Objective-C
    • Все динамично:
    • - объекты создаются в куче
    • - нет стековых объектов
    • Методы связываются динамически
    • Присутствует интроспекция
  • 30. Создание объекта из класса
  • 31. Objective-C
    • Классы определяют состояние и поведение
    • Состояние определяется инвариантами
    • Поведение – методами
    • Менять состояние можно методами доступа ( accessors )
  • 32. Objective-C
    • Объекты отвечают на методы объекта:
    • - ( id ) init;
    • - (float)height;
    • - (void)walk;
    • Классы отвечают на методы классов:
    • + ( id ) alloc;
    • + (id)person;
    • + (Person *)sharedPerson;
  • 33. Objective-C
    • Синтаксис вызова метода (посылки сообщения):
    • [receiver message ]
    • [receiver message: argument]
    • [receiver message: arg1 andArg: arg2]
  • 34. Objective-C
    • Пример:
    • Person *voter = [[Person alloc ] init ];
    • int age = [voter age ];
    • [voter setAge: 21]
    • if ([voter canLegallyVote ])
    • {/*do smth*/}
    • [voter registerForState: @”CA” party: @”Independant”];
    • NSString *name = [[voter spouse ] name ];
  • 35. Objective-C
    • Точечный синтаксис ( ObjC 2.0 ):
    • float height = [person height];
    • float height = person.height;
    • [person setHeight: newHeight];
    • person.height = newHeight;
    • [[person child] setHeight: newHeight];
    • person.child.height = newHeight;
  • 36. Objective-C
    • Нулевой указатель:
    • if (nil == person) return;
    • if (!person) return;
    • person = nil;
    • [button setTarget: nil];
    • person = nil;
    • [person die];
  • 37. Objective-C
    • Макросы для типа BOOL :
    • BOOL flag = NO;
    • if (flag) return;
    • else flag = YES
    • flag = 1;
    • if (flag) return;
    • else flag = 0;
  • 38. Objective-C
    • Тип SEL как указатель на метод:
    • SEL action = [button action];
    • [button setAction: @selector(start:)];
    • Для методов из нескольких слов:
    • - ( void ) setName: (NSString *)name age: (int)age;
    • SEL sel = @selector(setName:age:);
  • 39. Objective-C
    • Можно определить, отвечает ли объект на некоторое сообщение:
    • id obj;
    • SEL selector = @selector(start:);
    • if ([obj respondsToSelector: selector])
    • [obj performSelector: selector withObjects: self] ;
  • 40. Objective-C
    • Сравнение указателей:
    • if (obj1 == obj2)
    • NSLog(@”Same exact object instance”);
    • Сравнение состояний:
    • if ([obj1 isEqual: obj2])
    • NSLog(@”Logically equivalent”);
  • 41. Objective-C
    • Специальный метод-описание:
    • - ( NSString * ) description;
    • Используется в форматной строке:
    • [NSString stringWithFormat: @”Object description: %@”, myObject];
    • NSLog([anObject description]);
  • 42. Foundation Framework
    • Содержит классы для АТД
    • Задачи, таймера, нити
    • Работа с файлами, IPC, bundle
    • NSObject:
    • - всеобщий базовый класс
    • - управление памятью
    • - сравнение объектов
    • - интроспекция
  • 43. Foundation Контейнеры
    • NSArray - упорядоченный массив объектов
    • NSDictionary – ключ-значение
    • NSSet – множество уникальных объектов
    • Единый механизм перечисления
    • Константные и изменяемые классы
    • NSMutableArray, NSMutableDictionary, NSMutableSet
  • 44. Foundation Контейнеры
    • Перечисление элементов контейнера:
    • NSArray *colors = [NSArray arrayWithObjects: @”Red”, @”Blue”, @”Green”, nil];
    • NSString *color;
    • int count = [colors count];
    • for (i = 0; i < count; ++i ) //old style
    • {
    • color = [array objectAtIndex: i];
    • NSLog(color);
    • }
    • for (Color *color in colors ) //new style
    • NSLog(color);
  • 45. Файлы описания классов
  • 46. Объявление класса
  • 47. Определение методов доступа
  • 48. Вызов собственных методов
  • 49. Вызов методов родителя
    • self – аналог this
    • super – псевдоним объекта-родителя
    • - ( void ) doSomething
    • {
    • [super doSomething];
    • //…
    • }
  • 50. Создание объекта
    • + alloc – выделение памяти для объекта некоторого класса (увеличивается счетчик ссылок)
    • - init – вызов конструктора
    • MyClass *object = [[MyClass alloc] init];
  • 51. Реализация конструктора
  • 52. Сбалансированные вызовы
  • 53. Управление памятью
  • 54. Управление памятью
  • 55. Управление памятью
  • 56. Реализация деструктора
  • 57. Вопросы?

×