Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 13 лет назад пользователемshoumikhin
1 Программирование Mac OS
2 История возникновения Архитектура Инструменты разработки Язык Библиотеки План
3 Steven Jobs & Stephen Wozniak
4 История 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 млн
5 История 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)
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 и старше Патчи к 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 QuartzOpenGLQuickTime CarbonCocoaJava GUI Фреймворки Технологии Ядро
19 XNU = Mach + BSD Mach: - виртуальная память - RPC - вытесняющее планирование и SMP - защита памяти - IPC BSD: - POSIX интерфейс - сигналы - стек TCP\IP - 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 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 Для методов из нескольких слов: - (void)setName: (NSString *)name age: (int)age; SEL sel
39 Objective-C Можно определить, отвечает ли объект на некоторое сообщение: id obj; SEL selector if ([obj respondsToSelector: selector]) [obj performSelector: selector withObjects: self];
40 Objective-C Сравнение указателей: if (obj1 == obj2) exact object instance); Сравнение состояний: if ([obj1 isEqual: obj2]) equivalent);
41 Objective-C Специальный метод-описание: - (NSString *)description; Используется в форматной строке: [NSString description: myObject]; NSLog([anObject description]);
42 Foundation Framework Содержит классы для АТД Задачи, таймера, нити Работа с файлами, IPC, bundle NSObject: - всеобщий базовый класс - управление памятью - сравнение объектов - интроспекция
43 Foundation Контейнеры NSArray - упорядоченный массив объектов NSDictionary – ключ-значение NSSet – множество уникальных объектов Единый механизм перечисления Константные и изменяемые классы NSMutableArray, NSMutableDictionary, NSMutableSet
44 Foundation Контейнеры Перечисление элементов контейнера: NSArray *colors = @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 Управление памятью
56 Реализация деструктора
57 Вопросы?
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.