'

Программирование Mac OS

Понравилась презентация – покажи это...





Слайд 0

Программирование Mac OS


Слайд 1

История возникновения Архитектура Инструменты разработки Язык Библиотеки План


Слайд 2

Steven Jobs & Stephen Wozniak


Слайд 3

История 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 млн


Слайд 4

История 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)


Слайд 5

Mac OS 1 (1984)


Слайд 6

Mac OS 6 (1988)


Слайд 7

Mac OS 7 (1991)


Слайд 8

Mac OS 7.5 (1994)


Слайд 9

Mac OS 8.5 (1998)


Слайд 10

Mac OS 9 (1999)


Слайд 11

Mac OS 10 (2001)


Слайд 12

Mac OS 10.6 (2009)


Слайд 13

Hackintosh (2006) Mac OS 10.4.4 и старше Патчи к XNU


Слайд 14

MessagePad


Слайд 15

MessagePad & iPhone


Слайд 16

Особенности Mac OS X Darwin: XNU + набор драйверов и утилит XNU: ядро Mach + BSD API Фреймворки Cocoa, Carbon и Java Технологии QuickTime, Quartz и OpenGL Тема Aqua


Слайд 17

Архитектурная модель Aqua Darwin Quartz OpenGL QuickTime Carbon Cocoa Java GUI Фреймворки Технологии Ядро


Слайд 18

XNU = Mach + BSD Mach: - виртуальная память - RPC - вытесняющее планирование и SMP - защита памяти - IPC BSD: - POSIX интерфейс - сигналы - стек TCP\IP - VFS


Слайд 19

И еще раз…


Слайд 20

Toolkit GCC GDB Make Libtool Otool


Слайд 21

Компиляция из командной строки


Слайд 22

Bundle


Слайд 23

XCode


Слайд 24

Interface Builder


Слайд 25

developer.apple.com


Слайд 26

Objective-C Надмножество С Очень простой язык, но новый синтаксис Одиночное наследование, единый базовый класс Есть понятие интерфейса (абстрактный класс) Методы бывают либо виртуальные либо статические Слабо типизирован


Слайд 27

Objective-C Новые типы: - анонимный объект (id) - класс (Class) - селектор (SEL) Синтаксис объявления и определения класса Синтаксис вызова метода


Слайд 28

Objective-C Все динамично: - объекты создаются в куче - нет стековых объектов Методы связываются динамически Присутствует интроспекция


Слайд 29

Создание объекта из класса


Слайд 30

Objective-C Классы определяют состояние и поведение Состояние определяется инвариантами Поведение – методами Менять состояние можно методами доступа (accessors)


Слайд 31

Objective-C Объекты отвечают на методы объекта: - (id)init; - (float)height; - (void)walk; Классы отвечают на методы классов: + (id)alloc; + (id)person; + (Person *)sharedPerson;


Слайд 32

Objective-C Синтаксис вызова метода (посылки сообщения): [receiver message] [receiver message: argument] [receiver message: arg1 andArg: arg2]


Слайд 33

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];


Слайд 34

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;


Слайд 35

Objective-C Нулевой указатель: if (nil == person) return; if (!person) return; person = nil; [button setTarget: nil]; person = nil; [person die];


Слайд 36

Objective-C Макросы для типа BOOL: BOOL flag = NO; if (flag) return; else flag = YES flag = 1; if (flag) return; else flag = 0;


Слайд 37

Objective-C Тип SEL как указатель на метод: SEL action = [button action]; [button setAction: @selector(start:)]; Для методов из нескольких слов: - (void)setName: (NSString *)name age: (int)age; SEL sel = @selector(setName:age:);


Слайд 38

Objective-C Можно определить, отвечает ли объект на некоторое сообщение: id obj; SEL selector = @selector(start:); if ([obj respondsToSelector: selector]) [obj performSelector: selector withObjects: self] ;


Слайд 39

Objective-C Сравнение указателей: if (obj1 == obj2) NSLog(@”Same exact object instance”); Сравнение состояний: if ([obj1 isEqual: obj2]) NSLog(@”Logically equivalent”);


Слайд 40

Objective-C Специальный метод-описание: - (NSString *)description; Используется в форматной строке: [NSString stringWithFormat: @”Object description: %@”, myObject]; NSLog([anObject description]);


Слайд 41

Foundation Framework Содержит классы для АТД Задачи, таймера, нити Работа с файлами, IPC, bundle NSObject: - всеобщий базовый класс - управление памятью - сравнение объектов - интроспекция


Слайд 42

Foundation Контейнеры NSArray - упорядоченный массив объектов NSDictionary – ключ-значение NSSet – множество уникальных объектов Единый механизм перечисления Константные и изменяемые классы NSMutableArray, NSMutableDictionary, NSMutableSet


Слайд 43

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);


Слайд 44

Файлы описания классов


Слайд 45

Объявление класса


Слайд 46

Определение методов доступа


Слайд 47

Вызов собственных методов


Слайд 48

Вызов методов родителя self – аналог this super – псевдоним объекта-родителя - (void)doSomething { [super doSomething]; //… }


Слайд 49

Создание объекта + alloc – выделение памяти для объекта некоторого класса (увеличивается счетчик ссылок) - init – вызов конструктора MyClass *object = [[MyClass alloc] init];


Слайд 50

Реализация конструктора


Слайд 51

Сбалансированные вызовы


Слайд 52

Управление памятью


Слайд 53

Управление памятью


Слайд 54

Управление памятью


Слайд 55

Реализация деструктора


Слайд 56

Вопросы?


×

HTML:





Ссылка: