Курсы по мобильной разработке. 1 лекция. Знакомство с iOS

1,832 views

Published on

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

  • Be the first to like this

No Downloads
Views
Total views
1,832
On SlideShare
0
From Embeds
0
Number of Embeds
28
Actions
Shares
0
Downloads
68
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Курсы по мобильной разработке. 1 лекция. Знакомство с iOS

    1. 1. Знакомство с iOS
    2. 2. Мобильная разработка, что изменилось?
    3. 3. Особенности• Высокие ожидания пользователей• Другие паттерны использования• Маленький экран• Слабый процессор, мало памяти• Медленный интернет• Управление жестами
    4. 4. Разработка под iOS
    5. 5. XCode
    6. 6. Как запустить Mac OS?•Купить Mac• Hacintosh• Виртуалка
    7. 7. Apple Developer Program $99• Отладка на устройстве• Выпуск в AppStore
    8. 8. Objective-C
    9. 9. История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
    10. 10. Основные особенности• объектно-ориентированный• компилируется в машинный код• полностью совместим с Си• слабо-типизированный• счетчик ссылок (iOS)• garbage collector (MacOS)
    11. 11. Синтаксис
    12. 12. User.h
    13. 13. User.h@interface User@end
    14. 14. User.h@interface User : NSObject@end
    15. 15. User.h#import <Foundation/Foundation.h>@interface User : NSObject@end
    16. 16. User.h#import <Foundation/Foundation.h>@interface User : NSObject- (void)deleteProfile;@end
    17. 17. User.h#import <Foundation/Foundation.h>@interface User : NSObject- (void)deleteProfile;- (void)postCommentWithText:(NSString *)text;- (void)postCommentWithTopic:(NSString *)topic andText:(NSString *)text;@end
    18. 18. User.h#import <Foundation/Foundation.h>@interface User : NSObject@property(nonatomic, strong) NSString *name;@property(nonatomic) NSInteger age;- (void)deleteProfile;- (void)postCommentWithText:(NSString *)text;- (void)postCommentWithTopic:(NSString *)topic andText:(NSString *)text;@end
    19. 19. User.h#import <Foundation/Foundation.h>@interface User : NSObject@property(nonatomic, strong) NSString *name;@property(nonatomic) NSInteger age;- (void)setAge:(NSInteger)age;- (NSInteger)age;- (void)deleteProfile;- (void)postCommentWithText:(NSString *)text;- (void)postCommentWithTopic:(NSString *)topic andText:(NSString *)text;@end
    20. 20. User.m
    21. 21. #import "User.h"@implementation User User.m@end
    22. 22. #import "User.h"@implementation User User.m@synthesize age = _age;@synthesize name = _name;@end
    23. 23. #import "User.h"@implementation User User.m@synthesize age = _age;@synthesize name = _name;- (void)setAge:(NSInteger)age{ _age = age; NSLog(@"Установили возраст %d", age);}@end
    24. 24. #import "User.h"@implementation User User.m@synthesize age = _age;@synthesize name = _name;- (void)setAge:(NSInteger)age{ _age = age; NSLog(@"Установили возраст %d", age);}- (void)deleteProfile{ // удаляем из базы NSString *name = [self name]; NSLog(@"Пользователь %@ удален", name);}- (void)postCommentWithText:(NSString *)text{ [self postCommentWithTopic:@"" andText:text];}- (void)postCommentWithTopic:(NSString *)topic andText:(NSString *)text{ NSLog(@"Пользователь %@ (возраст: %d) с темой %@", self.name, self.age, topic);}@end
    25. 25. Admin.h
    26. 26. Admin.h#import "User.h"@interface Admin : User- (void)deleteComment:(NSInteger)key;@end
    27. 27. Admin.h#import "User.h"@interface Admin : User- (void)deleteComment:(NSInteger)key;@endAdmin.m
    28. 28. Admin.h#import "User.h"@interface Admin : User- (void)deleteComment:(NSInteger)key;@endAdmin.m#import "Admin.h"@implementation Admin- (void)deleteComment:(NSInteger)key{ //удаляем из базы NSLog(@"Комментарий с ключом %d удален", key); // оставляем комментарий, об удалении [self postCommentWithTopic:@"От админа" andText:@"Удалил коммент за хамство"];}
    29. 29. Инициализация объектов
    30. 30. Инициализация объектовUser *user = [[User alloc] init];
    31. 31. Инициализация объектовUser *user = [[User alloc] init];user.age = 46;[user setName:@"MedvedevRussia"];
    32. 32. Инициализация объектовUser *user = [[User alloc] init];user.age = 46;[user setName:@"MedvedevRussia"];NSString *comment = @"Я считаю, что было бы правильно выдвинуть Владимира Путина на должность президента страны";[user postCommentWithText:comment];[user deleteProfile];
    33. 33. Собственный инициализатор
    34. 34. Собственный инициализатор- (id)initWithName:(NSString *)name{ self = [super init]; if (self) { self.name = name; } return self;}
    35. 35. Собственный инициализатор- (id)initWithName:(NSString *)name{ self = [super init]; if (self) { self.name = name; } return self;}- (id)init{ return [self initWithName:@"Имя по умолчанию"];}
    36. 36. Методы класса
    37. 37. Методы классаВ файле Admin.h:
    38. 38. Методы классаВ файле Admin.h:+ (Admin *)createAdmin;
    39. 39. Методы классаВ файле Admin.h:+ (Admin *)createAdmin;В файле Admin.m:
    40. 40. Методы классаВ файле Admin.h:+ (Admin *)createAdmin;В файле Admin.m:+ (Admin *)createAdmin{ Admin *admin = [[Admin alloc] initWithName:@"Админ Админович"]; admin.age = 34; return admin;}
    41. 41. Методы классаВ файле Admin.h:+ (Admin *)createAdmin;В файле Admin.m:+ (Admin *)createAdmin{ Admin *admin = [[Admin alloc] initWithName:@"Админ Админович"]; admin.age = 34; return admin;}Использование:
    42. 42. Методы класса В файле Admin.h: + (Admin *)createAdmin; В файле Admin.m:+ (Admin *)createAdmin{ Admin *admin = [[Admin alloc] initWithName:@"Админ Админович"]; admin.age = 34; return admin;}Использование:Admin *admin = [Admin createAdmin];[admin deleteComment:10];
    43. 43. Переменные класа (ivar-ы)
    44. 44. Переменные класа (ivar-ы)@interface User : NSObject{ NSString *_name;}- (void)setName:(NSString *)name;- (NSString *)name;@end
    45. 45. Переменные класа (ivar-ы)@interface User : NSObject{ NSString *_name;}- (void)setName:(NSString *)name;- (NSString *)name;@end@implementation User- (void)setName:(NSString *)name{ _name = name;}- (NSString *)name{ return _name;}@end
    46. 46. Протоколы
    47. 47. Протоколы@protocol SendMessageProtocol <NSObject>- (void)sendMessage:(NSString *)message;@end
    48. 48. Протоколы@protocol SendMessageProtocol <NSObject>- (void)sendMessage:(NSString *)message;@end@interface User : NSObject<SendMessageProtocol>@end
    49. 49. Протоколы@protocol SendMessageProtocol <NSObject>- (void)sendMessage:(NSString *)message;@end@interface User : NSObject<SendMessageProtocol>@end@implementation User- (void)sendMessage:(NSString *)message{ // send message}@end
    50. 50. Протоколы@protocol SendMessageProtocol <NSObject>- (void)sendMessage:(NSString *)message;@end@interface User : NSObject<SendMessageProtocol>@end@implementation User- (void)sendMessage:(NSString *)message{ // send message}@endid<SendMessageProtocol> sender = [[User alloc] init];[sender sendMessage:@"message"];
    51. 51. Категории
    52. 52. Категории@interface NSString(User)- (User *)userWithName;@end
    53. 53. Категории@interface NSString(User)- (User *)userWithName;@end@implementation NSString(User)- (User *)userWithName{ User *result = [[User alloc] init]; result.name = self; return result;}@end
    54. 54. Категории@interface NSString(User)- (User *)userWithName;@end@implementation NSString(User)- (User *)userWithName{ User *result = [[User alloc] init]; result.name = self; return result;}@endUser *test = [@"Username" userWithName];
    55. 55. Objective-C style guide• Локальные переменные: myLocalVariable• Свойства: myProperty• Классы: MyClass• Методы: doSomethingWith:• Внутренние переменные: • _myLocal • myLocal_ • myLocal
    56. 56. Демонстрация XCode
    57. 57. Всё!Вопросы? Глеб Тарасов vkontakte.ru/pilot34 twitter.com/pilot34
    58. 58. Темы для подготовки• Указатели • ссылки • указатели • стек • куча
    59. 59. Темы для подготовки• Управление памятью • retain/release/autorelease • Automatice Reference Counting (ARC) • Garbage Collector
    60. 60. Темы для подготовки• Foundation.framework • NSObject • NSString • NSArray • NSDictionary • ...
    61. 61. Темы для подготовкиModel-View-Controller (MVC)
    62. 62. Темы для подготовкиКак запустить XCode без мака? (Отчёт о попытках)

    ×