0
Розробка на          Objective-C          для iPhoneАнатолій ОхотніковSoftjourn, Inc.
План AppleiPhone Мова Objective-C Розробка для iPhone Питання
Apple Inc.   Залізо – Mac (персональні компютери та    ноутбуки), Cinema Display, AirPort, etc.   Програмне забезпечення...
iPhone   Телефон для здійснення дзвінків таповідомлень набираючи імя та текст задопомогою інтелектуальної клавіатури   iPo...
Популярність iPhone               3Q09     3Q09        3Q08     3Q08 Company               Sales   Market       Sales   Ma...
Objective-C   Що таке Objective-C?         Історія   Синтаксис                    Створення нових   Механізм повідомл...
Що таке Objective-C   Обєктно-оріентована мова програмування   Компілюється в машинний код   Побудована на основі мови ...
Історія: SmallTalk   Розпочато роботу в 1969   Основні ідеї    –   Все обєкти    –   Все доступно для змін    –   Динамі...
Історія: Objective-C   Створено Бредом Коксом на початку 1980х   Концепція IC Software    –   Збирати програми з готових...
Синтаксис                     id                                     [receiver message];   Параметри [myRect setWidth:1...
Створення нових класів   Опис класу міститься у файлі .h    @interface ClassName : SuperClass {         instance variable...
Механізм повідомлень   Компілятор перетворює повідомлення [object msg] у    виклик функції objc_msgSend(object,SEL,...) ...
Виключення (Exceptions)   Використовуються директиви    –   @try, @catch, @finally та @throw    Cup * cup = [[Cup alloc] ...
Протоколи   Мова Objective-C містить повноцінну підтримку    протоколів. Найпростіший опис протокола:       @protocol Pro...
Створення та знищення обєктів   В самій мові Objective-C немає спеціальних команд    для створення та знищення обєктів   ...
Синхронізація    Підтримує синхронізацію багатопоточних програм      –   За допомогою директиви @synchronized()     - (vo...
Категорії   Можливість додавати методи до вже існуючих класів    –   Аналогічні можливості у Ruby, C#, JavaScript та деяк...
Управління памяттюУ процесі створення програми для Mac OS у вас є можливістьвключити систему прибирання сміття (garbage co...
Ще про управління памяттю   Система управління памяттю рахує посилання    –   Якщо викликаєте alloc або retain певну кіль...
Розробка для iPhone   Архітектура iPhone / Сервіси iPhone OS   Інструметарій розробника   iPhone SDK / обмеження   Coc...
Архітектура iPhone   32-біт RISC ISA компютер, з ARM11/ARM Cortex A8 процесором    412/600 Мгц виробництва Samsung Electr...
Архітектура iPhone
Сервіси iPhone OS   Ядро OS    –   OS X Kernel, XNU Mach 3.0, BSD, Sockets, Security, Power        management, KeyChain, ...
Архітектура iPhone OS
Інструментарій розробника   Компьютер з Mac OS X Leopard (10.5.7 для    SDK 3.1.2)   iPhone SDK (реєстрація developer.ap...
iPhone SDK   Середовище XCode   Симулятор iPhone   Інструменти (Instruments)   Interface Builder   Ресурси для    роз...
Обмеження   Тільки API високого рівня – немає доступу до    функцій дзвінка/sms, обмежений доступ до    відкритих частин...
Cocoa   Обєкто-орієнтоване середовище   Cocoa, Carbon, Toolbox, POSIX i Java   XCode (Project Builder) i Interface Buil...
Cocoa Touch   API що надає рівень абстракції для iPhone OS   Оснований на Cocoa API   Побудований навколо вводу дотиком...
Ще про Cocoa Touch
Середовище розробки XCode
Побудова інтерфейсу   Interface Builder   "розетки" IBOutletи   Dependency Injection
Hello World!   File -> New Project -> View Based Application@interface testViewController : UIViewController {    IBOutle...
Збереження данихВсі дані зберігаються у SQLite v3 базах данихSMS
/private/var/root/Library/SMS/sms.dbCallData
/System/Libr...
Інструменти (Instruments)   Аналіз та візуалізація швидкодії програм   Оснований на DTrace від Sun Microsystems   Інстр...
Тестування   За допомогою    симулятора з SDK   Приєднавши iPhone   Вбудуваний debugger    або оптимізатор   2 інцеден...
Розповсюдження   Standard Developer Program    (розповсюдження через App Store)   Enterprise Developer Program    (розпо...
7 характеристик вдалої програми   Причаровуючі (дизайн, кольори, звуки, робота)   Новаторскі (нові або незвично подані к...
Посилання   http://developer.apple.com/   http://ru.wikipedia.org/wiki/IPhone   http://ru.wikipedia.org/wiki/Objective-...
Питання?З питаннями та по інформацію звертатись:Анатолій Охотніковaokhotnikov@softjourn.com
iPhone Objective-C Development (ukr) (2009)
iPhone Objective-C Development (ukr) (2009)
iPhone Objective-C Development (ukr) (2009)
Upcoming SlideShare
Loading in...5
×

iPhone Objective-C Development (ukr) (2009)

666

Published on

An old presentation(2009), historical interest :)
Apple iPhone
Мова Objective-C
Розробка для iPhone

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
666
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "iPhone Objective-C Development (ukr) (2009)"

  1. 1. Розробка на Objective-C для iPhoneАнатолій ОхотніковSoftjourn, Inc.
  2. 2. План AppleiPhone Мова Objective-C Розробка для iPhone Питання
  3. 3. Apple Inc. Залізо – Mac (персональні компютери та ноутбуки), Cinema Display, AirPort, etc. Програмне забезпечення – Mac OS X, Mac OS X Server, QuickTime, iLife, iWork, Logic Pro, etc. Побутова електроніка – iPod, iPhone, AppleTV, etc. Співробітники – 35100 (станом на січень 2009)
  4. 4. iPhone Телефон для здійснення дзвінків таповідомлень набираючи імя та текст задопомогою інтелектуальної клавіатури iPod насолоджуйтесь музикою тавідео на широкоформатному екраніта купуйте музику одним дотиком Internet перегляд веб сторінок,HTML пошти, використання GPS мап Високі технології 3G, Multi-Touch,GPS, акселерометр, сенсори, камера
  5. 5. Популярність iPhone 3Q09 3Q09  3Q08 3Q08 Company  Sales Market  Sales Market Q309 iPhone займає  Share   Share  (%) (%) 17.1% світового ринку смартфонів згідно зіNokia 16,156.4 39.3 15,472.3 42.3 звітом аналітичноїResearch 8,522.7 20.8 5,800.4 15.9in Motion фірми Gartner від 41Apple 7,040.4 17.1 4720.3 12.9 млн. в загальномуHTC 2,659.5 6.5 1,656.3 4.5Samsung 1,320.6 3.2 1,114.8 3.0 Q308 – 12.9%Others 5,368.0 13.1 7,793.3 21.3 Q307 – 3.4%Total 41,067.6 100.0 36,557.4 100.0
  6. 6. Objective-C Що таке Objective-C?  Історія Синтаксис  Створення нових Механізм повідомлень класів Виключення (Exceptions)  Протоколи Створення та знищення  Синхронізація обєктів  Категорії  Управління памяттю
  7. 7. Що таке Objective-C Обєктно-оріентована мова програмування Компілюється в машинний код Побудована на основі мови С (повністю сумісна) Парадигми SmallTalk (механізм повідмень) Входить до набору GCC Mac OS X (Cocoa), iPhone OS (CocoaTouch), GNUstep – сімя NeXTSTEP
  8. 8. Історія: SmallTalk Розпочато роботу в 1969 Основні ідеї – Все обєкти – Все доступно для змін – Динамічна типізація – MVC шаблон для UI – Динамічна трансляція Великий вплив на – Objective-C, Actor, Java, Groovy та Ruby Недолік – ВМ (гальмує)
  9. 9. Історія: Objective-C Створено Бредом Коксом на початку 1980х Концепція IC Software – Збирати програми з готових компонент Проста та базується на С Класи – повноцінні обєкти Динамізм на етапі виконання Метаінформація, протоколи, наслідування Багато функціоналу в runtime Підтримується та розвивається Apple
  10. 10. Синтаксис id  [receiver message]; Параметри [myRect setWidth:10.0 :20.0]; Мітки параметрів [myRect setWidth:10.0 height:20.0]; Кількість аргументів [myObject makeGroup: obj1, obj2, nil]; Поверненння значення float area = [myRect area]; Вкладені повідомення [myRect setColor:[otherRect color]]; class object для створення (на зразок Abstract Factory) Класи як обєкти Rect * myRect = [[Rect alloc] init];
  11. 11. Створення нових класів Опис класу міститься у файлі .h @interface ClassName : SuperClass { instance variable declarations } method declarations @end Реалізація класу міститься у файлі .m #import "ClassName.h" @implementation ClassName method implementations @end У методах доступні усі instance-змінні, для управління доступом до змінних (не для методів): – @private, @protected, @public
  12. 12. Механізм повідомлень Компілятор перетворює повідомлення [object msg] у виклик функції objc_msgSend(object,SEL,...) Кожен обєкт містит isa – посилання на class object Компілятор створює єдиний class object class object містить посилання на superklass та dispatch table – Пошук реалізації методу здійснються по селектору у dispatch table SEL (32-bit значення), кеш для прискорення NSInvocation для не знайдених методів перед виключенням
  13. 13. Виключення (Exceptions) Використовуються директиви – @try, @catch, @finally та @throw Cup * cup = [[Cup alloc] init]; @try { [cup fill]; } @catch ( NSException * exc ) { NSLog ( @"Exception caught: %@", exc ); } @catch ( id exc ) { NSLog ( @"Unknown exception caught" ); } @finally { [cup release]; } NSException * exc = [NSException exceptionWithName: @"my- exception" reason: @"unknown-error" userInfo: nil]; @throw exc;
  14. 14. Протоколи Мова Objective-C містить повноцінну підтримку протоколів. Найпростіший опис протокола: @protocol ProtocolName method declarations @end Так протокол Serializable можна описати наступним: @protocol Serializable - (id) initWithCoder: (NSCoder *) coder; - (void) encodeWithCoder: (NSCoder *) coder; @end Протокол може бути успадкований від довільної кількості інших протоколів:@protocol MyProto <Protocol1, Protocol2, Serializable,Drawable> При описі класу можна задати список протоколів:@interface MyClass : SuperClass <Protocol1, Protocol2, Serializable,Drawable>
  15. 15. Створення та знищення обєктів В самій мові Objective-C немає спеціальних команд для створення та знищення обєктів (подібних new і delete) Ця задача полягає на runtime-бібліотеку і реалізується за допомогою повідомлень – Виділення памяті (alloc з базового NSObject) – Ініціалізація обєкта (init та інші що починаються з init) id anObject = [[Rectangle alloc] init]; При створнні нового класа звичайно не виникає потреби перевизначати alloc, а ось init досить часто
  16. 16. Синхронізація Підтримує синхронізацію багатопоточних програм – За допомогою директиви @synchronized() - (void) criticalMethod { @synchronized ( self ) { // perfrom modifications to shared objects . . . } } @synchronized () бере на вхід вказівник на обєкт мови Objective-C (можна використовувати для цієї мети будь-який обєкт, в тому числі і self), який грає роль мютекса(mutex). Мютекс перевіряється при спробі виконання коду, який вже виконується іншим потоком і при співпадінні новий потік призупиняється(suspended).
  17. 17. Категорії Можливість додавати методи до вже існуючих класів – Аналогічні можливості у Ruby, C#, JavaScript та деякі інших Не вимагається наявність вихідних кодів класу Опис категорії: #import "ClassName.h" @interface ClassName ( CategoryName ) methods declarations @end Реалізація категорії: #import "CategoryName.h" @implementation ClassName ( CategoryName ) methods bodies @end
  18. 18. Управління памяттюУ процесі створення програми для Mac OS у вас є можливістьвключити систему прибирання сміття (garbage collector).В загальному, це означає, що вам не треба думати про управлінняпамяттю, доки ви не дійдете до більш складних випадків.Якщо ви створюєте обєкт, через виклик alloc, вам необхідно будезнищити його і звільнити память при виході з програми або у кінціділянки коду, що використовує цей обєкт, через виклик функціїrelease. Ви не повинні вручну знищувати autoreleased обєкти.// string1 буде видалено прибиральником сміття в автоматичному режиміNSString* string1 = [NSString string];// для string2 ви повинні будете вручну викликати release методNSString* string2 = [[NSString alloc] init];[string2 release];
  19. 19. Ще про управління памяттю Система управління памяттю рахує посилання – Якщо викликаєте alloc або retain певну кількість разів – Таку саму кількість разів викликайте release При використанні обєкта як змінної екземпляра – autorelease для старого, та retain для нового у set-методі – Переконайеся що викликали release в методі dealloc При одноразовому використанні обєкта у функції – Якщо створили за допомогою alloc або copy, не забудьте відправити йому release або autorelease повідомлення – Якщо створили іншим чином, то не робіть нічого
  20. 20. Розробка для iPhone Архітектура iPhone / Сервіси iPhone OS Інструметарій розробника iPhone SDK / обмеження Cocoa Touch / інтерфейс Hello World! Збереження даних Інструменти Тестування / Розповсюдження 7 характеристик вдалої програми
  21. 21. Архітектура iPhone 32-біт RISC ISA компютер, з ARM11/ARM Cortex A8 процесором 412/600 Мгц виробництва Samsung Electronics, графічні ядра PowerVR MBX-Lite/SGX, 128/256 RAM, 8/16/32 Гб флеш-памяті, Wi-Fi, Bluetooth, GSM/EDGE, 3G, A-GPS
  22. 22. Архітектура iPhone
  23. 23. Сервіси iPhone OS Ядро OS – OS X Kernel, XNU Mach 3.0, BSD, Sockets, Security, Power management, KeyChain, Certificates, File System, Bonjour Сервіси ядра (написані на С) – Collections, Address Book, Networking, File Access, SQLite, Core Location, Net Services, Threading, Preferences, URL Utilities Мультимедіа – Core Audio, Open AL, Audio Mixing, Audio Recording, Video Playback, JPG, PNG, TIFF, PDF, Quartz(2D), Core Animation, OpenGL ES Cocoa Touch – Multi touch events, Multi touch controls, Accelerometer, View Hierarchy, Localization, Alerts, Web views, People picker, Image picker, Controllers
  24. 24. Архітектура iPhone OS
  25. 25. Інструментарій розробника Компьютер з Mac OS X Leopard (10.5.7 для SDK 3.1.2) iPhone SDK (реєстрація developer.apple.com) XCode IDE (включено в SDK) Симулятор iPhone (включено в SDK) Internet (для завантаження документації)
  26. 26. iPhone SDK Середовище XCode Симулятор iPhone Інструменти (Instruments) Interface Builder Ресурси для розробників
  27. 27. Обмеження Тільки API високого рівня – немає доступу до функцій дзвінка/sms, обмежений доступ до відкритих частин Система закрита, немає відкритого / легального низькорівневого API: якщо ви ним користуєтесь – злочинець Тільки один доданок на передньому плані, жорсткі політики для розробників (погодження з AppStore, платний сертифікат)
  28. 28. Cocoa Обєкто-орієнтоване середовище Cocoa, Carbon, Toolbox, POSIX i Java XCode (Project Builder) i Interface Builder Objective-C, Ruby, Python, Perl, C#, ObjB «Користувацький інтерфейс» - Apple HIG Основні Foundation Kit / Application Kit MVC, late binding, KVC, KVO
  29. 29. Cocoa Touch API що надає рівень абстракції для iPhone OS Оснований на Cocoa API Побудований навколо вводу дотиком UI Kit – User Interface Elements, Application Runtime, Event Handling, Hardware APIs Foundation – Utility Classes, Collection Classes, Object Wrappers for system services, Subset of Foundation in Cocoa
  30. 30. Ще про Cocoa Touch
  31. 31. Середовище розробки XCode
  32. 32. Побудова інтерфейсу Interface Builder "розетки" IBOutletи Dependency Injection
  33. 33. Hello World! File -> New Project -> View Based Application@interface testViewController : UIViewController { IBOutlet UITextField *text1; IBOutlet UITextField *text2;}- (IBAction)copy:(id)sender;@end@implementation testViewController- (IBAction)copy:(id)sender { [text2 setText:[text1 text]];}
  34. 34. Збереження данихВсі дані зберігаються у SQLite v3 базах данихSMS
/private/var/root/Library/SMS/sms.dbCallData
/System/Library/Frameworks/AppSupport.framework/calldata.dbCallHistory
/private/var/root/Library/CallHistory/call_history.dbKeyChain
/private/var/root/Library/Keychains/keychain-2.dbNotes
/private/var/root/Library/Notes/notes.dbVoicemail
/private/var/root/Library/Voicemail/voicemail.dbAddressBook
/private/var/root/Library/AddressBook/AddressBook.sqlitedbAddressBook Images
/private/var/root/Library/AddressBook/AddressBookImagesMaptiles
/private/var/root/Library/Caches/MapTiles/MapTiles.sqlitedbCalendar
/private/var/root/Library/Calendar/Calendar.sqlitedb
  35. 35. Інструменти (Instruments) Аналіз та візуалізація швидкодії програм Оснований на DTrace від Sun Microsystems Інструменти можуть відслідковувати – Події користувача, такі як натискування кнопок клавіатури, рухи мишкою та кліки з визначеним часом – Активність CPU процесів та потоків. – Виділення та вивільнення памяті, прибирання сміття та витіки памяті – Файлові читання, записи, блокування – Активність мережі та трафік – Графіку та внутрішню роботу OpenGL
  36. 36. Тестування За допомогою симулятора з SDK Приєднавши iPhone Вбудуваний debugger або оптимізатор 2 інцеденти технічної підтримки
  37. 37. Розповсюдження Standard Developer Program (розповсюдження через App Store) Enterprise Developer Program (розповсюдження через Intranet компанії) Ad Hoc – обмін (розповсюдження через Email/Web сайт не більше 100 користувачам) App Store доступний через Wi-Fi та стільникові мережі Автоматичне повідомлення про оновлення
  38. 38. 7 характеристик вдалої програми Причаровуючі (дизайн, кольори, звуки, робота) Новаторскі (нові або незвично подані концепти) Добре опрацьовані (якісні, детальні, прості) Інтегровані (використовувати можливості) Оптимізовані (потенціал OS, взаємодія) Підключені (інші програми та сервіси) Локалізовані (iPhone доступний у >80 країн)
  39. 39. Посилання http://developer.apple.com/ http://ru.wikipedia.org/wiki/IPhone http://ru.wikipedia.org/wiki/Objective-C http://pyobjc.ru/2008/07/19/vvedenie-v-objective-c/ http://www.gartner.com/it/page.jsp?id=1224645 http://habrahabr.ru/blogs/macosxdev/ http://iphoneappledev.blogspot.com/ http://www.cocoalab.com/?q=becomeanxcoder
  40. 40. Питання?З питаннями та по інформацію звертатись:Анатолій Охотніковaokhotnikov@softjourn.com
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×