iPhone Objective-C Development (ukr) (2009)
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

iPhone Objective-C Development (ukr) (2009)

on

  • 954 views

An old presentation(2009), historical interest :)

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

Statistics

Views

Total Views
954
Views on SlideShare
954
Embed Views
0

Actions

Likes
0
Downloads
1
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

iPhone Objective-C Development (ukr) (2009) Presentation Transcript

  • 1. Розробка на Objective-C для iPhoneАнатолій ОхотніковSoftjourn, Inc.
  • 2. План AppleiPhone Мова Objective-C Розробка для iPhone Питання
  • 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. iPhone Телефон для здійснення дзвінків таповідомлень набираючи імя та текст задопомогою інтелектуальної клавіатури iPod насолоджуйтесь музикою тавідео на широкоформатному екраніта купуйте музику одним дотиком Internet перегляд веб сторінок,HTML пошти, використання GPS мап Високі технології 3G, Multi-Touch,GPS, акселерометр, сенсори, камера
  • 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. Objective-C Що таке Objective-C?  Історія Синтаксис  Створення нових Механізм повідомлень класів Виключення (Exceptions)  Протоколи Створення та знищення  Синхронізація обєктів  Категорії  Управління памяттю
  • 7. Що таке Objective-C Обєктно-оріентована мова програмування Компілюється в машинний код Побудована на основі мови С (повністю сумісна) Парадигми SmallTalk (механізм повідмень) Входить до набору GCC Mac OS X (Cocoa), iPhone OS (CocoaTouch), GNUstep – сімя NeXTSTEP
  • 8. Історія: SmallTalk Розпочато роботу в 1969 Основні ідеї – Все обєкти – Все доступно для змін – Динамічна типізація – MVC шаблон для UI – Динамічна трансляція Великий вплив на – Objective-C, Actor, Java, Groovy та Ruby Недолік – ВМ (гальмує)
  • 9. Історія: Objective-C Створено Бредом Коксом на початку 1980х Концепція IC Software – Збирати програми з готових компонент Проста та базується на С Класи – повноцінні обєкти Динамізм на етапі виконання Метаінформація, протоколи, наслідування Багато функціоналу в runtime Підтримується та розвивається Apple
  • 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. Створення нових класів Опис класу міститься у файлі .h @interface ClassName : SuperClass { instance variable declarations } method declarations @end Реалізація класу міститься у файлі .m #import "ClassName.h" @implementation ClassName method implementations @end У методах доступні усі instance-змінні, для управління доступом до змінних (не для методів): – @private, @protected, @public
  • 12. Механізм повідомлень Компілятор перетворює повідомлення [object msg] у виклик функції objc_msgSend(object,SEL,...) Кожен обєкт містит isa – посилання на class object Компілятор створює єдиний class object class object містить посилання на superklass та dispatch table – Пошук реалізації методу здійснються по селектору у dispatch table SEL (32-bit значення), кеш для прискорення NSInvocation для не знайдених методів перед виключенням
  • 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. Протоколи Мова 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. Створення та знищення обєктів В самій мові Objective-C немає спеціальних команд для створення та знищення обєктів (подібних new і delete) Ця задача полягає на runtime-бібліотеку і реалізується за допомогою повідомлень – Виділення памяті (alloc з базового NSObject) – Ініціалізація обєкта (init та інші що починаються з init) id anObject = [[Rectangle alloc] init]; При створнні нового класа звичайно не виникає потреби перевизначати alloc, а ось init досить часто
  • 16. Синхронізація Підтримує синхронізацію багатопоточних програм – За допомогою директиви @synchronized() - (void) criticalMethod { @synchronized ( self ) { // perfrom modifications to shared objects . . . } } @synchronized () бере на вхід вказівник на обєкт мови Objective-C (можна використовувати для цієї мети будь-який обєкт, в тому числі і self), який грає роль мютекса(mutex). Мютекс перевіряється при спробі виконання коду, який вже виконується іншим потоком і при співпадінні новий потік призупиняється(suspended).
  • 17. Категорії Можливість додавати методи до вже існуючих класів – Аналогічні можливості у Ruby, C#, JavaScript та деякі інших Не вимагається наявність вихідних кодів класу Опис категорії: #import "ClassName.h" @interface ClassName ( CategoryName ) methods declarations @end Реалізація категорії: #import "CategoryName.h" @implementation ClassName ( CategoryName ) methods bodies @end
  • 18. Управління памяттюУ процесі створення програми для Mac OS у вас є можливістьвключити систему прибирання сміття (garbage collector).В загальному, це означає, що вам не треба думати про управлінняпамяттю, доки ви не дійдете до більш складних випадків.Якщо ви створюєте обєкт, через виклик alloc, вам необхідно будезнищити його і звільнити память при виході з програми або у кінціділянки коду, що використовує цей обєкт, через виклик функціїrelease. Ви не повинні вручну знищувати autoreleased обєкти.// string1 буде видалено прибиральником сміття в автоматичному режиміNSString* string1 = [NSString string];// для string2 ви повинні будете вручну викликати release методNSString* string2 = [[NSString alloc] init];[string2 release];
  • 19. Ще про управління памяттю Система управління памяттю рахує посилання – Якщо викликаєте alloc або retain певну кількість разів – Таку саму кількість разів викликайте release При використанні обєкта як змінної екземпляра – autorelease для старого, та retain для нового у set-методі – Переконайеся що викликали release в методі dealloc При одноразовому використанні обєкта у функції – Якщо створили за допомогою alloc або copy, не забудьте відправити йому release або autorelease повідомлення – Якщо створили іншим чином, то не робіть нічого
  • 20. Розробка для iPhone Архітектура iPhone / Сервіси iPhone OS Інструметарій розробника iPhone SDK / обмеження Cocoa Touch / інтерфейс Hello World! Збереження даних Інструменти Тестування / Розповсюдження 7 характеристик вдалої програми
  • 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. Архітектура iPhone
  • 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. Архітектура iPhone OS
  • 25. Інструментарій розробника Компьютер з Mac OS X Leopard (10.5.7 для SDK 3.1.2) iPhone SDK (реєстрація developer.apple.com) XCode IDE (включено в SDK) Симулятор iPhone (включено в SDK) Internet (для завантаження документації)
  • 26. iPhone SDK Середовище XCode Симулятор iPhone Інструменти (Instruments) Interface Builder Ресурси для розробників
  • 27. Обмеження Тільки API високого рівня – немає доступу до функцій дзвінка/sms, обмежений доступ до відкритих частин Система закрита, немає відкритого / легального низькорівневого API: якщо ви ним користуєтесь – злочинець Тільки один доданок на передньому плані, жорсткі політики для розробників (погодження з AppStore, платний сертифікат)
  • 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. 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. Ще про Cocoa Touch
  • 31. Середовище розробки XCode
  • 32. Побудова інтерфейсу Interface Builder "розетки" IBOutletи Dependency Injection
  • 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. Збереження данихВсі дані зберігаються у 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. Інструменти (Instruments) Аналіз та візуалізація швидкодії програм Оснований на DTrace від Sun Microsystems Інструменти можуть відслідковувати – Події користувача, такі як натискування кнопок клавіатури, рухи мишкою та кліки з визначеним часом – Активність CPU процесів та потоків. – Виділення та вивільнення памяті, прибирання сміття та витіки памяті – Файлові читання, записи, блокування – Активність мережі та трафік – Графіку та внутрішню роботу OpenGL
  • 36. Тестування За допомогою симулятора з SDK Приєднавши iPhone Вбудуваний debugger або оптимізатор 2 інцеденти технічної підтримки
  • 37. Розповсюдження Standard Developer Program (розповсюдження через App Store) Enterprise Developer Program (розповсюдження через Intranet компанії) Ad Hoc – обмін (розповсюдження через Email/Web сайт не більше 100 користувачам) App Store доступний через Wi-Fi та стільникові мережі Автоматичне повідомлення про оновлення
  • 38. 7 характеристик вдалої програми Причаровуючі (дизайн, кольори, звуки, робота) Новаторскі (нові або незвично подані концепти) Добре опрацьовані (якісні, детальні, прості) Інтегровані (використовувати можливості) Оптимізовані (потенціал OS, взаємодія) Підключені (інші програми та сервіси) Локалізовані (iPhone доступний у >80 країн)
  • 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. Питання?З питаннями та по інформацію звертатись:Анатолій Охотніковaokhotnikov@softjourn.com