Кратко о mac os x
TRANSCRIPT
![Page 1: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/1.jpg)
Программирование Mac OS
![Page 2: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/2.jpg)
Steven Jobs & Stephen Wozniak
![Page 3: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/3.jpg)
История Apple
1976 – появился Apple I 1977 – выпуск Apple I I 1979 – начинается работа над
Macintosh 1982 – годовой доход превышает $1
млрд 1984 – в продажу выходит Macintosh 1985 – Jobs уходит и основывает NeXT 1991 – первый ноутбук (PowerBook) 1992 – IBM и Apple создают PowerPC 1995 – годовой доход превышает $11
млрд 1996 – Apple покупает NeXT за $430
млн
![Page 4: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/4.jpg)
История Apple
1997 – Jobs возвращается 1998 – первый iMac 2000 – 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)
![Page 5: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/5.jpg)
Mac OS 1 (1984)
![Page 6: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/6.jpg)
Mac OS 6 (1988)
![Page 7: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/7.jpg)
Mac OS 7 (1991)
![Page 8: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/8.jpg)
Mac OS 7.5 (1994)
![Page 9: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/9.jpg)
Mac OS 8.5 (1998)
![Page 10: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/10.jpg)
Mac OS 9 (1999)
![Page 11: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/11.jpg)
Mac OS 10 (2001)
![Page 12: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/12.jpg)
Mac OS 10.6 (2009)
![Page 13: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/13.jpg)
Hackintosh (2006)
Mac OS 10.4.4 и старше
Патчи к XNU
![Page 14: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/14.jpg)
MessagePad
![Page 15: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/15.jpg)
MessagePad & iPhone
![Page 16: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/16.jpg)
Особенности Mac OS X
Darwin: XNU + набор драйверов и утилит
XNU: ядро Mach + BSD APIФреймворки Cocoa, Carbon и JavaТехнологии QuickTime, Quartz и
OpenGLТема Aqua
![Page 17: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/17.jpg)
Архитектурная модель
Aqua
Darwin
Quartz OpenGL QuickTime
Carbon Cocoa Java
GUI
Фреймворки
Технологии
Ядро
![Page 18: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/18.jpg)
XNU = Mach + BSD
Mach:- виртуальная память- RPC- вытесняющее
планирование и SMP- защита памяти- IPC
BSD:- POSIX интерфейс- сигналы- стек TCP\IP- VFS
![Page 19: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/19.jpg)
И еще раз…
![Page 20: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/20.jpg)
Toolkit
GCC
GDB
Make
Libtool
Otool
![Page 21: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/21.jpg)
Компиляция из командной строки
![Page 22: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/22.jpg)
Bundle
![Page 23: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/23.jpg)
XCode
![Page 24: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/24.jpg)
Interface Builder
![Page 25: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/25.jpg)
developer.apple.com
![Page 26: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/26.jpg)
Objective-C
Надмножество СОчень простой язык, но новый
синтаксисОдиночное наследование, единый
базовый классЕсть понятие интерфейса
(абстрактный класс)Методы бывают либо
виртуальные либо статическиеСлабо типизирован
![Page 27: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/27.jpg)
Objective-C
Новые типы:- анонимный объект (id)- класс (Class)- селектор (SEL)
Синтаксис объявления и определения класса
Синтаксис вызова метода
![Page 28: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/28.jpg)
Objective-C
Все динамично:- объекты создаются в куче- нет стековых объектов
Методы связываются динамически
Присутствует интроспекция
![Page 29: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/29.jpg)
Создание объекта из класса
![Page 30: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/30.jpg)
Objective-C
Классы определяют состояние и поведение
Состояние определяется инвариантами
Поведение – методамиМенять состояние можно
методами доступа (accessors)
![Page 31: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/31.jpg)
Objective-C
Объекты отвечают на методы объекта:- (id)init;- (float)height;- (void)walk;
Классы отвечают на методы классов:+ (id)alloc;+ (id)person;+ (Person *)sharedPerson;
![Page 32: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/32.jpg)
Objective-C
Синтаксис вызова метода (посылки сообщения):
[receiver message][receiver message: argument][receiver message: arg1 andArg: arg2]
![Page 33: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/33.jpg)
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];
![Page 34: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/34.jpg)
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;
![Page 35: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/35.jpg)
Objective-C
Нулевой указатель:
if (nil == person) return;if (!person) return;
person = nil; [button setTarget: nil];
person = nil;[person die];
![Page 36: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/36.jpg)
Objective-C
Макросы для типа BOOL:
BOOL flag = NO;
if (flag) return;else flag = YES
flag = 1;
if (flag) return;else flag = 0;
![Page 37: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/37.jpg)
Objective-C
Тип SEL как указатель на метод:
SEL action = [button action];[button setAction: @selector(start:)];
Для методов из нескольких слов:
- (void)setName: (NSString *)name age: (int)age;SEL sel = @selector(setName:age:);
![Page 38: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/38.jpg)
Objective-C
Можно определить, отвечает ли объект на некоторое сообщение:
id obj;SEL selector = @selector(start:);
if ([obj respondsToSelector: selector])[obj performSelector: selector withObjects:
self] ;
![Page 39: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/39.jpg)
Objective-C
Сравнение указателей:
if (obj1 == obj2)NSLog(@”Same exact object instance”);
Сравнение состояний:
if ([obj1 isEqual: obj2])NSLog(@”Logically equivalent”);
![Page 40: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/40.jpg)
Objective-C
Специальный метод-описание:
- (NSString *)description;
Используется в форматной строке:
[NSString stringWithFormat: @”Object description: %@”, myObject];NSLog([anObject description]);
![Page 41: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/41.jpg)
Foundation Framework
Содержит классы для АТДЗадачи, таймера, нитиРабота с файлами, IPC, bundleNSObject:
- всеобщий базовый класс- управление памятью- сравнение объектов- интроспекция
![Page 42: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/42.jpg)
Foundation Контейнеры
NSArray - упорядоченный массив объектов
NSDictionary – ключ-значениеNSSet – множество уникальных
объектовЕдиный механизм перечисленияКонстантные и изменяемые
классыNSMutableArray, NSMutableDictionary, NSMutableSet
![Page 43: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/43.jpg)
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 styleNSLog(color);
![Page 44: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/44.jpg)
Файлы описания классов
![Page 45: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/45.jpg)
Объявление класса
![Page 46: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/46.jpg)
Определение методов доступа
![Page 47: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/47.jpg)
Вызов собственных методов
![Page 48: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/48.jpg)
Вызов методов родителя
self – аналог thissuper – псевдоним объекта-
родителя
- (void)doSomething{
[super doSomething];//…
}
![Page 49: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/49.jpg)
Создание объекта
+ alloc – выделение памяти для объекта некоторого класса (увеличивается счетчик ссылок)
- init – вызов конструктора
MyClass *object = [[MyClass alloc] init];
![Page 50: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/50.jpg)
Реализация конструктора
![Page 51: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/51.jpg)
Сбалансированные вызовы
![Page 52: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/52.jpg)
Управление памятью
![Page 53: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/53.jpg)
Управление памятью
![Page 54: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/54.jpg)
Управление памятью
![Page 55: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/55.jpg)
Реализация деструктора
![Page 56: Кратко о Mac OS X](https://reader035.vdocument.in/reader035/viewer/2022081422/557ec3afd8b42ad27b8b5345/html5/thumbnails/56.jpg)
Вопросы?