ΠΡΠ°ΠΊ, ΡΡΠΈΡΡΠ²Π°Ρ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅, ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ Π½Π°Ρ ΠΊΠ»Π°ΡΡ:
#import Β«Person.hΒ»
NSString *const kFirstNameKey = @"FirstNameKey";
NSString *const kLastNameKey = @"LastNameKey";
@implementation Person
β (void)encodeWithCoder:(NSCoder *)aCoder{
[aCoder encodeObject: self.firstName forKey: kFirstNameKey];
[aCoder encodeObject: self.lastName forKey: kLastNameKey];
}
β (instancetype)initWithCoder:(NSCoder *)aDecoder{
self = [super init];
if (self!= nil){
_firstName = [aDecoder decodeObjectForKey: kFirstNameKey];
_lastName = [aDecoder decodeObjectForKey: kLastNameKey];
}
return self;
}
@end
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠ° NSCoder ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΡΠΎ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΌ. Π Π°Π·Π½ΠΈΡΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΡΠ»ΠΎΠ²Π°ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° setValue: forKey: ΠΌΡ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ encodeObject: forKey:, Π° Π²ΠΌΠ΅ΡΡΠΎ ΡΠ»ΠΎΠ²Π°ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° objectForKey: Π·Π°Π΄Π΅ΠΉΡΡΠ²ΡΠ΅ΠΌ decodeObjectForKey:. ΠΡΠ»ΠΈΡΠΈΡ ΠΎΡ ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Ρ.
ΠΡΠ°ΠΊ, Ρ ΡΡΠΈΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ Π²ΡΠ΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎ. Π’Π΅ΠΏΠ΅ΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π°ΡΡ ΠΈΠ²Π°ΡΠΈΠΈ ΠΈ Π΄Π΅Π°ΡΡ ΠΈΠ²Π°ΡΠΈΠΈ, ΠΏΠΎΠ»ΡΠ·ΡΡΡΡ Π΄Π²ΡΠΌΡ Π²ΡΡΠ΅ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠΌΠΈ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ. ΠΡ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΡΠ½Π°ΡΠ°Π»Π° ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° Person, Π·Π°ΡΠ΅ΠΌ Π·Π°Π°ΡΡ ΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ, ΡΠ±ΡΠ°ΡΡ ΠΈΠ· ΠΏΠ°ΠΌΡΡΠΈ, ΠΏΠΎΡΠΎΠΌ ΡΡΠΈΡΠ°ΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΈΠ· ΡΠ°ΠΉΠ»Π° ΠΈ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΡΠ°Π·Π°ΡΡ ΠΈΠ²ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΡΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΡ ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Π»ΠΈ Π² ΠΊΠ»Π°ΡΡ. ΠΡΠ΅ ΡΡΠΎ ΠΌΡ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ Π² Π΄Π΅Π»Π΅Π³Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ°ΠΌ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΎΡΠ΅ Π²ΡΠ΅Π³ΠΎ:
#import Β«AppDelegate.hΒ»
#import Β«Person.hΒ»
@implementation AppDelegate
β (BOOL) application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
/* ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΈΠΌΡ ΠΈ ΡΠ°ΠΌΠΈΠ»ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ Π·Π°Π΄Π°ΡΡ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ */
NSString *const kFirstName = @"Steven";
NSString *const kLastName = @"Jobs";
/* ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ, Π³Π΄Π΅ Ρ ΠΎΡΠΈΠΌ Π·Π°Π°ΡΡ ΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ */
NSString *filePath = [NSTemporaryDirectory()
stringByAppendingPathComponent:@"steveJobs.txt"];
/* ΠΠ½ΡΡΠ°Π½ΡΠΈΡΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ */
Person *steveJobs = [[Person alloc] init];
steveJobs.firstName = kFirstName;
steveJobs.lastName = kLastName;
/* ΠΡΡ ΠΈΠ²ΠΈΡΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΡΠ°ΠΉΠ» */
[NSKeyedArchiver archiveRootObject: steveJobs toFile: filePath];
/* Π’Π΅ΠΏΠ΅ΡΡ ΡΠ°Π·Π°ΡΡ ΠΈΠ²ΠΈΡΡΠ΅ΠΌ ΡΡΠΎΡ ΠΆΠ΅ ΠΊΠ»Π°ΡΡ Π² Π΄ΡΡΠ³ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ */
Person *cloneOfSteveJobs =
[NSKeyedUnarchiver unarchiveObjectWithFile: filePath];
/* ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Π»ΠΈ ΠΈΠΌΡ ΠΈ ΡΠ°ΠΌΠΈΠ»ΠΈΡ Π² ΡΠ°Π·Π°ΡΡ ΠΈΠ²ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ΅
Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ ΡΠ°ΠΌΠΈΠ»ΠΈΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°Ρ ΠΎΠ΄ΠΈΠ»ΠΈΡΡ Π² ΡΠ°Π½Π΅Π΅ Π°ΡΡ ΠΈΠ²ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ */
if ([cloneOfSteveJobs.firstName isEqualToString: kFirstName] &&
[cloneOfSteveJobs.lastName isEqualToString: kLastName]){
NSLog(@"Unarchiving worked");
} else {
NSLog(@"Could not read the same values back. Oh no!");
}
/* ΠΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΡΠ°ΠΉΠ» Π½Π°ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π½ΡΠΆΠ΅Π½, ΡΠ΄Π°Π»ΡΠ΅ΠΌ Π΅Π³ΠΎ */
NSFileManager *fileManager = [[NSFileManager alloc] init];
[fileManager removeItemAtPath: filePath error: nil];
self.window = [[UIWindow alloc]
initWithFrame: [[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
ΠΡΠ°ΠΊ, ΠΏΡΠΈ Π°ΡΡ ΠΈΠ²Π°ΡΠΈΠΈ ΠΏΡΠΎΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° archiveRootObject: toFile, ΠΎΡΠ½ΠΎΡΡΡΠΈΠΉΡΡ ΠΊ ΠΊΠ»Π°ΡΡΡ NSKeyedArchiver. ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈ ΡΠ°ΠΉΠ», Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅. ΠΡΠ΅ ΠΏΡΠΎΡΡΠΎ. Π Π΅ΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΡΠ°Π·Π°ΡΡ ΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ? ΠΠ΅ ΡΠ»ΠΎΠΆΠ½Π΅Π΅ Π°ΡΡ ΠΈΠ²Π°ΡΠΈΠΈ. ΠΠ°ΠΌ ΠΏΡΠΎΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΠΏΡΡΡ ΠΊ Π·Π°Π°ΡΡ ΠΈΠ²ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌΡ ΡΠ°ΠΉΠ»Ρ, ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΊΠ»Π°ΡΡΠ° unarchiveObjectWithFile:, ΠΎΡΠ½ΠΎΡΡΡΠ΅ΠΌΡΡΡ ΠΊ ΠΊΠ»Π°ΡΡΡ NSKeyedUnarchiver. ΠΡΡ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΊΠ»Π°ΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡ Π·Π° Π²Π°Ρ.
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅
Π Π°Π·Π΄Π΅Π» 12.1.
ΠΠ»Π°Π²Π° 13. ΠΠ°ΠΌΠ΅ΡΠ° ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΉ
13.0. ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ² Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ iOS, Π΄ΠΎΠΏΡΡΡΠΈΠΌ iPhone, ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½Ρ ΠΊΠ°ΠΌΠ΅ΡΠ°ΠΌΠΈ. Π£ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ iPhone Π΄Π²Π΅ ΠΊΠ°ΠΌΠ΅ΡΡ, Ρ Π΄ΡΡΠ³ΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ iOS Π½Π΅ ΠΎΡΠ½Π°ΡΠ΅Π½Ρ ΠΊΠ°ΠΌΠ΅ΡΠ°ΠΌΠΈ. ΠΠ»Π°ΡΡ UIImagePickerController ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΡΠΈΠ²ΡΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Camera ΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ½ΠΈΠΌΠΎΠΊ ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π²ΠΈΠ΄Π΅ΠΎ. Π€ΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ ΠΈΠ»ΠΈ Π²ΠΈΠ΄Π΅ΠΎΠ·Π°ΠΏΠΈΡΠΈ, Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π½ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»Π°ΡΡΠ° UIImagePickerController, ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ.
Π ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ½ΠΈΠΌΠ°ΡΡ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π²ΠΈΠ΄Π΅ΠΎ ΠΏΡΡΠΌΠΎ ΠΈΠ· ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΡΠΌ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ, ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Π½ΡΠΌ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΉ (Photo Library) Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ Ρ iOS, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π½Π° iPod touch ΠΈΠ»ΠΈ iPad.
Π ΡΠΈΠΌΡΠ»ΡΡΠΎΡΠ΅ iOS ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Camera Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ. ΠΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π² ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΡΡΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΎΡΠ»Π°ΠΆΠΈΠ²Π°ΡΡ Π½Π° Π½Π°ΡΡΠΎΡΡΠ΅ΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ Ρ iOS, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΎ ΠΊΠ°ΠΌΠ΅ΡΠΎΠΉ.
Π ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΠΎΠΏΡΡΠ°Π΅ΠΌΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΈΠΌΠ΅Π΅ΡΡΡ Π»ΠΈ ΠΊΠ°ΠΌΠ΅ΡΠ° Π½Π° ΡΠΎΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ Ρ iOS, Π³Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΡΡΠ½ΠΈΡΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π»ΠΈ ΠΊΠ°ΠΌΠ΅ΡΠ° Π²Π°ΠΌ (ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ) Π΄Π΅Π»Π°ΡΡ ΡΠΎΡΠΎΡΠ½ΠΈΠΌΠΊΠΈ, Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π²ΠΈΠ΄Π΅ΠΎ ΠΈΠ»ΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΠΎΠ±Π΅ ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ MobileCoreServices.framework ΠΊ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠ΅. ΠΡΠΎΡΡΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠΉΡΠ΅ Π΅Π³ΠΎ ΠΎΠ±ΠΎΠ±ΡΠ°ΡΡΠΈΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π² Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²ΠΎΡ ΡΠ°ΠΊ:
#import Β«AppDelegate.hΒ»
#import <MobileCoreServices/MobileCoreServices.h>
@implementation AppDelegate
<# ΠΡΡΠ°ΡΠΎΠΊ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π·Π΄Π΅ΡΡ #>
ΠΠ°Π»Π΅Π΅ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ Π΄ΡΡΠ³ΠΈΡ ΡΠ΅ΠΌ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΄ΠΎΡΡΡΠΏ ΠΊ Π²ΠΈΠ΄Π΅ΠΎ ΠΈ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΡΠΌ, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠΌ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π°Π»ΡΠ±ΠΎΠΌΠ°Ρ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ Ρ iOS. Π Π΅ΡΡ ΠΈΠ΄Π΅Ρ ΠΎ ΡΠ΅Ρ ΠΆΠ΅ ΡΠ°ΠΌΡΡ Π°Π»ΡΠ±ΠΎΠΌΠ°Ρ , Π² ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΠ°ΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Photos (Π€ΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ), ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ iOS.
ΠΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ, Π½Π°Ρ ΠΎΠ΄ΡΡΠ΅ΠΉΡΡ Π² Π°Π»ΡΠ±ΠΎΠΌΠ΅, ΠΏΡΠΎΡΠ΅, ΡΠ΅ΠΌ ΠΊ Π²ΠΈΠ΄Π΅ΠΎΠ·Π°ΠΏΠΈΡΠΈ. ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΡΠΌΠΈ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π°Π΄ΡΠ΅Ρ ΡΠ½ΠΈΠΌΠΊΠ° ΠΈ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΈ Π² ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ NSData Π»ΠΈΠ±ΠΎ ΠΏΡΡΠΌΠΎ Π² ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ UIImage. Π Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Ρ Π²ΠΈΠ΄Π΅ΠΎ ΠΌΡ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π°Π΄ΡΠ΅Ρ, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΡΠ°ΠΉΠ» Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΈ Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π½ΡΠΆΠ½ΠΎΠ΅ Π²ΠΈΠ΄Π΅ΠΎ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊΠΎΠΉ Π°Π΄ΡΠ΅Ρ:
assets-library://asset/asset.MOV?id=10000 00004&ext=MOV
ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌΠΈ Π°Π΄ΡΠ΅ΡΠ°ΠΌΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Assets Library (ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠ΅ΡΡΡΡΠΎΠ²). ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠ΅ΡΡΡΡΠΎΠ² ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ Π½Π°ΠΌ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΠΎΠ½ΡΠ΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Photos (Π€ΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ). ΠΡΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ ΠΈ Π²ΠΈΠ΄Π΅ΠΎΡΠΎΠ»ΠΈΠΊΠΈ, ΠΎΡΡΠ½ΡΡΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠ΅ΡΡΡΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π΄Π»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π΅. ΠΠΎΡΠΎΠΌ ΡΡΠΈ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ ΠΈ ΡΠΎΠ»ΠΈΠΊΠΈ Π±ΡΠ΄ΡΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π΄Π»Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΉ (Photo Library), Π° ΡΠ°ΠΊΠΆΠ΅ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠΌ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΡΠΎΠΌΡ ΠΊΠΎΠ½ΡΠ΅Π½ΡΡ.
Π§ΡΠΎΠ±Ρ Π²ΡΠ΅ ΠΊΠΎΠ΄Ρ ΠΈΠ· ΡΡΠΎΠΉ Π³Π»Π°Π²Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π»ΠΈΡΡ, ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ Assets Library ΠΈ Mobile Core Services Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π²ΠΎ Π²ΡΠ΅ Π²Π°ΡΠΈ ΡΠ°ΠΉΠ»Ρ Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π² ΡΠ°ΠΉΠ»Ρ Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° LLVM, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΌΠΎΠ΄ΡΠ»ΡΠΌΠΈ:
#import Β«AppDelegate.hΒ»
#import <MobileCoreServices/MobileCoreServices.h>
#import <AssetsLibrary/AssetsLibrary.h>
@implementation AppDelegate
<# ΠΡΡΠ°ΡΠΎΠΊ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π·Π΄Π΅ΡΡ #>
Π§ΡΠΎΠ±Ρ Π²ΡΠ΅ ΠΊΠΎΠ΄Ρ ΠΈΠ· ΡΡΠΎΠΉ Π³Π»Π°Π²Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π»ΠΈΡΡ, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ β ΡΠ°ΠΊ Π²Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ Π² Π²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Assets Library.
1. Π Xcode ΡΠ΅Π»ΠΊΠ½ΠΈΡΠ΅ Π½Π° ΡΡΠ»ΡΠΊΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
2. ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΡΠ΅Π»Ρ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ.
3. Π Π²Π΅ΡΡ Π½Π΅ΠΉ ΡΠ°ΡΡΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π²ΡΠ±Π΅ΡΠΈΡΠ΅ Build Phases (ΠΡΠ°ΠΏΡ ΡΠ±ΠΎΡΠΊΠΈ).
4. ΠΠ°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ + Π² Π½ΠΈΠΆΠ½Π΅ΠΌ Π»Π΅Π²ΠΎΠΌ ΡΠ³Π»Ρ ΡΠ°Π·Π΄Π΅Π»Π° Link Binaries with Libraries (Π‘Π²ΡΠ·Π°ΡΡ Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ).
5. ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ MobileCoreServices.framework.
6. ΠΠ°ΠΆΠΌΠΈΡΠ΅ Add (ΠΠΎΠ±Π°Π²ΠΈΡΡ).
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π΄Π°Π½Π½ΡΠΌ ΡΠ΅ΡΡΡΡΠ°, ΠΈΠΌΠ΅Ρ ΡΡΡΠ»ΠΊΡ Π½Π° ΡΡΠΎΡ ΡΠ΅ΡΡΡΡ, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π³ΠΈ.
1. ΠΡΠ΄Π΅Π»ΠΈΡΠ΅ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° ALAssetsLibrary. ΠΠ±ΡΠ΅ΠΊΡ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΡΡΠΊΡ (Bridge), ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ΅ΠΌ Π²ΠΈΠ΄Π΅ΠΎΡΠΎΠ»ΠΈΠΊΠ°ΠΌ ΠΈ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΡΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Photos (Π€ΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ).
2. ΠΠ»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ΅ΡΡΡΡΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° assetForURL: resultBlock: failureBlock, ΠΎΡΠ½ΠΎΡΡΡΠΈΠΌΡΡ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ΅ΡΡΡΡΠΎΠ² (Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π±ΡΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ Π½Π° ΡΠ°Π³Π΅ 1). Π Π΅ΡΡΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π²ΠΈΠ΄Π΅ΠΎ ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ Apple ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΉ. ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Π±Π»ΠΎΠΊΠΎΠ²ΡΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ Π±Π»ΠΎΠΊΠΎΠ²ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°Ρ ΠΈ GCD ΡΠ°ΡΡΠΊΠ°Π·Π°Π½ΠΎ Π² Π³Π»Π°Π²Π΅ 7.
3. ΠΡΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΠ΅ ΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ΅ΡΡΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» Π²ΡΠ΄Π΅Π»Π΅Π½ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ Π½Π° ΡΠ°Π³Π΅ 1.
ΠΠ° ΡΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅ Ρ Π²Π°Ρ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ Π²ΠΎΠΏΡΠΎΡ: ΠΊΠ°ΠΊ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ ΠΏΠΎΠ»ΡΡΠ°Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ Π΄Π°Π½Π½ΡΠΌ ΡΠ΅ΡΡΡΡΠ°? ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ resultBlock ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° assetForURL: resultBlock: failureBlock, ΠΎΡΠ½ΠΎΡΡΡΠ΅Π³ΠΎΡΡ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ΅ΡΡΡΡΠΎΠ², Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° Π±Π»ΠΎΠΊΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠΈΠΉ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΈΠΏΠ° ALAsset. ALAsset β ΡΡΠΎ ΠΊΠ»Π°ΡΡ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΡΠ΅ΡΡΡΡΠΎΠ², ΠΎΠ½ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΡΠ΅Ρ (Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ) ΡΠ΅ΡΡΡΡ, Π΄ΠΎΡΡΡΠΏΠ½ΡΠΉ Π΄Π»Ρ Photos (Π€ΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΈ) ΠΈΠ»ΠΈ Π»ΡΠ±ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ iOS, ΠΏΡΡΠ°ΡΡΠ΅Π³ΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΡΠ΅ΡΡΡΡ. Π’Π΅ΠΌΠ° ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠΎΡΠΎΡΠ½ΠΈΠΌΠΊΠΎΠ² ΠΈ Π²ΠΈΠ΄Π΅ΠΎΡΠΎΠ»ΠΈΠΊΠΎΠ² Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΉ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π° Π² ΡΠ°Π·Π΄Π΅Π»Π°Ρ 13.4 ΠΈ 13.5. Π ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΉ ΠΈ Π²ΠΈΠ΄Π΅ΠΎ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠΉ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΡΠ°ΡΡΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ°Π·Π΄Π΅Π»Π°Ρ 13.6 ΠΈ 13.7.