Mais conteúdo relacionado Semelhante a Курсы по мобильной разработке. 1 лекция. Знакомство с iOS (20) Mais de Глеб Тарасов (17) Курсы по мобильной разработке. 1 лекция. Знакомство с iOS7. Особенности
• Высокие ожидания пользователей
• Другие паттерны использования
• Маленький экран
• Слабый процессор, мало памяти
• Медленный интернет
• Управление жестами
12. Apple Developer
Program
$99
• Отладка на устройстве
• Выпуск в AppStore
14. История
1981 — Object-Oriented Pre-Compiler (OOPC).
Компания StepStone. Tom Love & Brad Cox
1986 — Objective-C. «Object-Oriented Programming, An
Evolutionary Approach» (Brad Cox).
1988 — NeXT лицензирует Objective-C
1996 — Apple покупает NeXT. Objective-C — основной
язык для Mac OS.
2007 — Objective-C — основной язык для iPhone OS
23. 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
24. 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
28. #import "User.h"
@implementation User
User.m
@synthesize age = _age;
@synthesize name = _name;
- (void)setAge:(NSInteger)age
{
_age = age;
NSLog(@"Установили возраст %d", age);
}
@end
29. #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
33. Admin.h
#import "User.h"
@interface Admin : User
- (void)deleteComment:(NSInteger)key;
@end
Admin.m
#import "Admin.h"
@implementation Admin
- (void)deleteComment:(NSInteger)key
{
//удаляем из базы
NSLog(@"Комментарий с ключом %d удален", key);
// оставляем комментарий, об удалении
[self postCommentWithTopic:@"От админа"
andText:@"Удалил коммент за хамство"];
}
37. Инициализация объектов
User *user = [[User alloc] init];
user.age = 46;
[user setName:@"MedvedevRussia"];
NSString *comment = @"Я считаю, что было бы правильно
выдвинуть Владимира Путина на
должность президента страны";
[user postCommentWithText:comment];
[user deleteProfile];
45. Методы класса
В файле Admin.h:
+ (Admin *)createAdmin;
В файле Admin.m:
+ (Admin *)createAdmin
{
Admin *admin = [[Admin alloc] initWithName:@"Админ Админович"];
admin.age = 34;
return admin;
}
46. Методы класса
В файле Admin.h:
+ (Admin *)createAdmin;
В файле Admin.m:
+ (Admin *)createAdmin
{
Admin *admin = [[Admin alloc] initWithName:@"Админ Админович"];
admin.age = 34;
return admin;
}
Использование:
47. Методы класса
В файле 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];
50. Переменные класа (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
55. Протоколы
@protocol SendMessageProtocol <NSObject>
- (void)sendMessage:(NSString *)message;
@end
@interface User : NSObject<SendMessageProtocol>
@end
@implementation User
- (void)sendMessage:(NSString *)message
{
// send message
}
@end
id<SendMessageProtocol> sender = [[User alloc] init];
[sender sendMessage:@"message"];
59. Категории
@interface NSString(User)
- (User *)userWithName;
@end
@implementation NSString(User)
- (User *)userWithName
{
User *result = [[User alloc] init];
result.name = self;
return result;
}
@end
User *test = [@"Username" userWithName];
60. Objective-C style guide
• Локальные переменные: myLocalVariable
• Свойства: myProperty
• Классы: MyClass
• Методы: doSomethingWith:
• Внутренние переменные:
• _myLocal
• myLocal_
• myLocal
62. Всё!
Вопросы?
Глеб Тарасов
vkontakte.ru/pilot34
twitter.com/pilot34
64. Темы для подготовки
• Управление памятью
• retain/release/autorelease
• Automatice Reference Counting (ARC)
• Garbage Collector
Notas do Editor \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