Squeek 1

2,539 views
2,493 views

Published on

Первое занятия курса Squeek School по iOS (iPhone/ iPad) разработке.

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,539
On SlideShare
0
From Embeds
0
Number of Embeds
1,713
Actions
Shares
0
Downloads
14
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Squeek 1

  1. 1. squeek schoolРазработка приложений для iOS
  2. 2. http://school.squeek.ru
  3. 3. Паринов ОлегEmpatika, Project ManagerВысшая Школа Экономики, бизнес-информатикаoleg.parinov@empatika.com oparinov
  4. 4. КурсCS 193P Факультет бизнес- информатики Отделение программной инженерии ЗАО ПРОГНОЗ
  5. 5. Литература Getting Help• Документация • The assignment walks you through it• developer.apple.comlook • Key spots to API & Conceptual Docs in Xcode• ■ stackoverflow.com files ■ Class header• ■ Docs, sample code, tech notes Джонатан Здзиарски «iPhone on Apple Developer Connection (ADC) site SDK. Разработка приложений» http://developer.apple.com ■ http://www.ozon.ru/context/ Dev site uses Google search ■ detail/id/4760826/• http://school.squeek.ru Thursday, January 7, 2010 5
  6. 6. Что в результате? Objective-C Xcode 4 iOS SDK Foundation UIKit командный проект
  7. 7. что потребуется от вас? Mac OS X + iOS SDK + Xcode
  8. 8. «Герой нашего времени»
  9. 9. iPhone
  10. 10. iPod touch
  11. 11. iPad
  12. 12. основы Objective-C
  13. 13. Objective-C• ООП• Синтаксис• Сообщения• Управление памятью• Основные классы (NSString, NSArray, NSDictionary)
  14. 14. ООП• Класс• Объект• Метод• Поле• Инкапсуляция• Наследование• Полиморфизм
  15. 15. Классы в Obj-C• Классы тоже объекты• Класс - шаблон для объекта• Класс имеет поля и методы (и свойства)• Поля скрыты извне - нужны get/set
  16. 16. Наследование в Obj-C Inheritance Superclass NSObject UIControl Subclass UIButton UITextField • Hierarchical relation between classes • Subclass “inherit” behavior and data from superclass • Subclasses can use, augment or replace superclass methodsThursday, January 7, 2010 10
  17. 17. Методы класса и объекта Class and Instance Methods• Class and Instance Methods Методы объекта (динамические) • Instances respond to instance methods - (id)init; - (float)height; • Instances respond to instance methods - (void)walk; - (id)init; - (float)height; •-Classes respond to class methods (void)walk;• Методы класса (статические) + (id)alloc; + (id)person; • Classes respond to class methods + (Person *)sharedPerson; + (id)alloc; + (id)person; + (Person *)sharedPerson;
  18. 18. Отправка сообщения Message syntax [receiver message]Terminology [receiver message:argument]Terminology• Message expression [receiver message:arg1 andArg:arg2] [receiver method: argument]• Message expression• Message [receiver method: argument] [receiver method: argument]• Message [receiver method: argument] - сообщение• Selector [receiver method: argument] - cелектор• Selector• Method [receiver method: argument] Thursday, January 7, 2010 22
  19. 19. ПримерPerson *voter;int theAge = [voter age];[voter setAge:21];if ([voter canLegallyVote]) { // что-то сделать здесь}[voter registerForState:@"CA" party:@"Independant"];NSString *name = [[voter spouse] name];
  20. 20. стадия дизайна класса• Создание описания класса - Person• Определение супер-класса - NSObject• Какие свойства нужны? имя, возраст, может ли голосовать• Какие действия может выполнять? голосовать
  21. 21. Defining a class A public header and a private implementationКласс = + Header File Implementation File
  22. 22. заголовок header and a A public Definin#import <Foundation/Foundation.h>@interface Person : NSObject {// переменные объектаNSString *name;int age;}// объявление методов- (NSString *)name; Header File- (void)setName:(NSString *)value;- (int)age;- (void)setAge:(int)age;- (BOOL)canLegallyVote;- (void)castBallot;@end
  23. 23. реализация Defining a class A public header and a private implementa#import "Person.h"@implementation Person- (int)age {return age;}- (void)setAge:(int)value {Header File Implementation Fileage = value;}//... и остальные методы@end
  24. 24. вызов собственных методов#import "Person.h"@implementation Person- (BOOL)canLegallyVote {return ([self age] >= 18);}- (void)castBallot {if ([self canLegallyVote]) { // голосование } else { NSLog (@“I’m not allowed to vote!”);}@end
  25. 25. Динамическая истатическая типизация• Person *person• id person
  26. 26. ничего• nil• person = nil; [person castBallot];
  27. 27. булевая• BOOL flag = NO;• if (flag == YES)• YES == TRUE == 1• NO == FALSE == 0
  28. 28. селекторid obj;SEL sel = @selector(start:);if ([obj respondsToSelector:sel]){ [obj performSelector:sel withObject:self];}
  29. 29. класс объекта• [myObject class];• [myObject className];• [myObject isKindOfClass:[NSString class]];
  30. 30. логирование• NSLog(@’’Hi there!’’);• NSLog(@’‘The row number %d’’, rowNumber);
  31. 31. NSString• Unicode• @’‘Some string’’• [NSString stringWithFormat:@’‘It’s %d’’, number];• [string stringByAppendingString:anotherString];• [string stringByAppendingFormat:• [string intValue]; [string doubleValue];
  32. 32. NSMutableString• редактируемая строка• appendString:• appendFormat:• insertString:atIndex:
  33. 33. NSArray• массив объектов• count• objectAtIndex:• +arrayWithObjects: , , ,nil• indexOfObject:
  34. 34. NSMutableArray• addObject:• removeObject:• insertObject:AtIndex:
  35. 35. NSDictionary• objectForKey• count• + dictionaryWithObject:forKey:• + dictionaryWithObjects:forKeys:• allKeys• allValues
  36. 36. NSMutableDictionary• setObject:forKey:• removeObjectForKey:
  37. 37. вызов суперкласса• [super doSomething];- (void)doSomething { // Вызов реализации у супер-класса [super doSomething]; // Теперь собственное поведение int foo = bar; // ... }
  38. 38. жизненный цикл объекта • Создание объектов • Управление памятью • Уничтожение объектов
  39. 39. созданиеAllocate + InitializePerson *person;person = [[Person alloc] init];
  40. 40. создание собственного init #import "Person.h" @implementation Person - (id)init { // сначала инициализируется супер-класс if (self = [super init]) { age = 0; name = @“Bob”; // другая инициализация... } return self; } @end

×