msumobi2. Лекция 1

732 views
629 views

Published on

Разработка мобильных приложений для iOS

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
732
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
19
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

msumobi2. Лекция 1

  1. 1. Разработка приложений для iOS Лекция 1 Знакомство, Введение в Objective-C#msumobi2 Глеб Тарасов
  2. 2. Связьhttp://vk.com/msumobi2#msumobi2
  3. 3. ЦелиiPhone
  4. 4. Цели iPad
  5. 5. ЦелиИгры
  6. 6. Вступительное задание — 10 человекДомашние задания — 5 человек
  7. 7. Кто это?
  8. 8. Ерундопель, Ударник, Орфограф, Сколькометр Игры в слова для iPhone/iPad-1 место среди платных игр в российском AppStore-3 место в российском AppStore среди всех платных приложений-13 место в российском AppStore среди бесплатных приложений
  9. 9. iPhone
  10. 10. iPad
  11. 11. iGuidesПриложение под iPhone/iPad для чтения новостей с сайта http://iguides.ru 1 место в российском AppStore в категории Top 25 News Free
  12. 12. iPhone
  13. 13. iPad
  14. 14. ИНТУИТМобильное приложение для Национального Открытого Университета http://intuit.ru. Чтение лекций, просмотр видео, прохождение тестов и сдача экзаменов 2 место в российском AppStore в категории Top 25 Education Free
  15. 15. iPhone
  16. 16. iPad
  17. 17. AldoCoppolaПриложение электронной записи клиентов для сети салонов красоты «AldoCoppola».
  18. 18. Остальное тут:http://www.slideshare.net/gtarasov/ss-12299478
  19. 19. Мобильная разработка, что изменилось?
  20. 20. Особенности• Высокие ожидания пользователей• Другие паттерны использования• Маленький экран• Слабый процессор, мало памяти• Медленный интернет• Управление жестами
  21. 21. Почему iOS?
  22. 22. Зачем вам это?
  23. 23. Разработка под iOS
  24. 24. XCode
  25. 25. Mac OS X (Mountain Lion, 10.8)
  26. 26. Как запустить Mac OS?•Компьютер Mac• Hacintosh• Виртуалка (VMWare,VirtualBox)
  27. 27. Apple Developer Program $99• Отладка на устройстве• Выпуск в AppStore
  28. 28. Objective-C
  29. 29. История1981 — Object-Oriented Pre-Compiler (OOPC).Компания StepStone. Tom Love & Brad Cox1986 — Objective-C. «Object-Oriented Programming, AnEvolutionary Approach» (Brad Cox).1988 — NeXT лицензирует Objective-C1996 — Apple покупает NeXT. Objective-C — основнойязык для Mac OS.2007 — Objective-C — основной язык для iPhone OS
  30. 30. Основные особенности• объектно-ориентированный• компилируется в машинный код• полностью совместим с Си• слабо-типизированный• управление памятью основано на счетчике ссылок
  31. 31. Сначала немного Сиhttp://ru.wikipedia.org/wiki/Си_(язык_программирования)
  32. 32. Указателиint main(int argc, const char * argv[]){ int a = 5; int *b = &a; *b = 7; printf("%d", a);} 7
  33. 33. Функцииdouble add(double a, double b){ return a + b;}int main(int argc, const char * argv[]){ double a = 5.5; double b = 7; double *arr = malloc(2 * sizeof(double)); arr[0] = a; arr[1] = b; printf("array [0] = %g, [1] = %g, add = %g", arr[0], arr[1], add(arr[0], arr[1])); free(arr);}
  34. 34. typedef struct{ Структуры float x; float y;} Location;double add(double a, double b){ return a + b;}Location createLocation(float x, float y){ Location l; l.x = x; l.y = y; return l;}int main(int argc, const char * argv[]){ Location l = createLocation(1.5, 0.5); printf("location: {%g, %g}", l.x, l.y);}
  35. 35. Перечисленияtypedef enum { UIViewAnimationCurveEaseInOut, UIViewAnimationCurveEaseIn, UIViewAnimationCurveEaseOut, UIViewAnimationCurveLinear} UIViewAnimationCurve;UIViewAnimationCurve a = UIViewAnimationCurveLinear;printf("%d", a);
  36. 36. Память Стек Куча{ int *a = malloc(sizeof(int) * 10); int a = 10;} free(a);{ int a = 20;}
  37. 37. Теперь немного ООПhttp://ru.wikipedia.org/wiki/Объектно-ориентированное_программирование
  38. 38. Класс - описание внутреннего состояния + методовизменения этого состоянияОбъект - экземпляр классаПоля - состояние объектаМетоды - изменение состояния объекта
  39. 39. Класс «Работник» Поля:- имя (строка)- возраст (целое)- пол (м/ж)- время_поступления_на_работу (дата)- время_увольнения (дата)- подчиненные (массив работников) Методы:- уволить()- добавить подчиненного(работник)
  40. 40. НаследованиеКласс «Руководитель» (наследуется от«Работник») Поля: - подчиненные (массив работников) Методы: - добавить подчиненного(работник)
  41. 41. Objective-C
  42. 42. СинтаксисNSString *a = [[NSString alloc] init];NSString *b = [a copy];NSString *c = @"string";[b stringByReplacingOccurrencesOfString:@" " withString:@""];[c stringByPaddingToLength:20 withString:@" " startingAtIndex:0];
  43. 43. nil• аналог null из других языков• можно вызывать любой метод, не будет исключения• если метод возвращает объект - вернется nil• если метод возвращает число - вернется 0• если метод возвращает структуру - результат не определен
  44. 44. nilNSString *a = nil;int length = [a length]; // 0NSString *m = [a mutableCopy]; // nilNSRange range = [a rangeOfString:@"a"]; // undefined!!!if (a) // if (a != nil){ NSRange r = [a rangeOfString:@"a"];}
  45. 45. BOOLBOOL a = YES;if (a) // if (a == YES){ BOOL b = [c isEqual:d]; if (!b) // if (a == NO) { //blabla }}
  46. 46. Демонстрация XCode
  47. 47. Вступительное задание- запустить Mac OS- установить XCode- запустить XCode- создать проект для iPhone- написать небольшую программу в main()- прислать zip с проектом и бинарник на почтуgleb34@gmail.com
  48. 48. - создать текстовый файл со своим именем- создать текстовый файл со своей фамилией- добавить их в проект- прочитать в текст из файлов в разные переменные- склеить в другую переменную- вывести в консоль
  49. 49. Всё! Глеб Тарасов gleb34@gmail.com twitter.com/pilot34
  50. 50. Если успеем
  51. 51. ЧислаCGFloat a = 0.5;NSInteger b = -1;NSUInteger q = 10;
  52. 52. СтруктурыCGPoint p;p.x = 10;p.y = 20;p = CGPointMake(10, 20);CGSize s;s.width = 100;s.height = 100;s = CGSizeMake(100, 100);CGRect r;r.size = s;r.origin = p;r = CGRectMake(10, 20, 100, 100);
  53. 53. Стандартные классы
  54. 54. Строки NSString NSMutableStringNSString *a = @"abc";NSString *b = [a stringByReplacingOccurrencesOfString:@"a" withString:@"b"];NSLog(@"b: %@", b);NSMutableString *m = [b mutableCopy];NSRange r;r.length = m.length;r.location = 0;[m replaceOccurrencesOfString:@"c" withString:@"b" options:0 range:r];NSLog(@"m: %@", m);
  55. 55. Списки NSArray NSMutableArray Обычные упорядоченные массивыNSArray *a = @[@"a", @"b", @"c"];NSString *first = a[0];NSString *last = a[[a count] - 1];NSMutableArray *b = [a mutableCopy];[b addObject:@"r"];[b replaceObjectAtIndex:1 withObject:@"q"];[b removeObjectAtIndex:2];
  56. 56. Словари NSDictionary NSMutableDictionary Хранение пар «ключ-значение». Быстрый поиск значения по ключуNSDictionary *dict = @ { @"key1" : @"a", @"key2" : @"b" };NSString *first = dict[@"key1"];NSMutableDictionary *m = [dict mutableCopy];m[@"key3"] = @"c";
  57. 57. Перечисление (enumeration)NSArray *arr = @[@"a", @"b", @"c"];for (NSString *a in arr){ NSLog(@"%@", a);}NSDictionary *dict = @{ @"key1" : @"a", @"key2" : @"b" };for (NSString *key in dict){ NSString *value = dict[key]; NSLog(@"%@ - %@", key, value);}
  58. 58. Числа NSNumberNSNumber *a = @(3);int b = [a intValue];NSNumber *c = @(2.5f);float d = [c floatValue];NSNumber *e = @(3.567);double f = [e doubleValue];if ([a isEqualToNumber:c]) NSLog(@"equals");
  59. 59. Бинарные данные NSData NSMutableData Хранение картинок, текстовых данных в бинарном виде и т.д.NSData *data = [[NSData alloc] initWithContentsOfFile:@"data.txt"];NSInteger length = [data length];[data writeToFile:@"result.txt" atomically:YES];NSMutableData *m = [data mutableCopy];[m appendData:data];
  60. 60. NSNull сохранять «пусто» в массивы и словариNSMutableArray *a = [[NSMutableArray alloc] init];[a addObject:[NSNull null]];NSObject *q = [a lastObject];if (q == [NSNull null]){ //bla bla}
  61. 61. NSValue преобразовывать структуры и другие «не объекты» в объектыCGPoint p = CGPointMake(10, 20);CGRect r = CGRectMake(10, 20, 30, 40);NSValue *v1 = [NSValue valueWithCGPoint:p];NSValue *v2 = [NSValue valueWithCGRect:r];NSArray *arr = [NSArray arrayWithObjects:v1, v2, nil];CGRect r2 = [[arr lastObject] CGRectValue];
  62. 62. Теперь точно всё! Глеб Тарасов gleb34@gmail.com twitter.com/pilot34

×