Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«iOS. ΠŸΡ€ΠΈΠ΅ΠΌΡ‹ программирования». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 124

Автор Π’Π°Π½Π΄Π°Π΄ Нахавандипур

2. Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ с диска Ρ‚ΠΎΡ‚ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΡ€Π΅Ρ€Π²Π°Π» ΠΈΠ³Ρ€Ρƒ.

3. Π’ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ°.

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π΅Π³Π°Ρ‚ нашСго прилоТСния β€” это ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ Π΄Π΅Π»Π΅Π³Π°Ρ‚Π° прилоТСния нСсколько ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²:


#import <UIKit/UIKit.h>


@interface AppDelegate: UIResponder <UIApplicationDelegate>


@property (nonatomic, strong) UIWindow *window;


/* Π‘охраняСм состояниС нашСго прилоТСния. */

β€” (void) saveUserScore;

β€” (void) saveLevelToDisk;

β€” (void) pauseGameEngine;


/* Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ состояниС нашСго прилоТСния. */

β€” (void) loadUserScore;

β€” (void) loadLevelFromDisk;

β€” (void) resumeGameEngine;


@end


ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π·Π°Π³Π»ΡƒΡˆΠΊΠ°ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΡƒΠΆΠ΅ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π² Ρ„Π°ΠΉΠ»Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π΅Π»Π΅Π³Π°Ρ‚Π° прилоТСния:


#import Β«AppDelegate.hΒ»


@implementation AppDelegate


β€” (void) saveUserScore{

/* Π—Π΄Π΅ΡΡŒ сохраняСм ΠΎΡ‡ΠΊΠΈ, Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. */

}


β€” (void) saveLevelToDisk{

/* Π‘охраняСм Π½Π° Π΄ΠΈΡΠΊΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ³Ρ€ΠΎΠΊΠ°

Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅ этого уровня. */

}


β€” (void) pauseGameEngine{

/* Π—Π΄Π΅ΡΡŒ приостанавливаСм Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ°. */

}


β€” (void) loadUserScore{

/* Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ мСстонахоТдСниС ΠΈΠ³Ρ€ΠΎΠΊΠ°. */

}


β€” (void) loadLevelFromDisk{

/* Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ послСднСС мСстонахоТдСниС ΠΈΠ³Ρ€ΠΎΠΊΠ° Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅. */

}


β€” (void) resumeGameEngine{

/* Π—Π΄Π΅ΡΡŒ возобновляСм Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ°. */

}

<# ΠžΡΡ‚Π°Ρ‚ΠΎΠΊ вашСго ΠΊΠΎΠ΄Π° находится здСсь #>


Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ способно ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ прСрывания, Π² частности входящиС Π·Π²ΠΎΠ½ΠΊΠΈ, ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΠ΅ Π½Π° iPhone. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² Ρ„ΠΎΠ½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ, Π½ΠΎ Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ станСт Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ. Если, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π½Ρ‹ΠΉ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€, Ρ‚ΠΎ iOS Π²Π΅Ρ€Π½Π΅Ρ‚ нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ состояниС. Π˜Ρ‚Π°ΠΊ, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ становится Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ, Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ приостановлСна Ρ€Π°Π±ΠΎΡ‚Π° ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ°. Когда ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ снова активизируСтся, Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ. На самом Π΄Π΅Π»Π΅, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ становится Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ, ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°ΠΌΠΈ Π½Π΅ стоит Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ всС Π½Π° дискС (ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅), Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ iOS Π²Π΅Ρ€Π½Π΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ состояниС лишь послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ вновь станСт Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ:


β€” (void)applicationWillResignActive:(UIApplication *)application{

[self pauseGameEngine];

}


β€” (void)applicationDidBecomeActive:(UIApplication *)application{

[self resumeGameEngine];

}


Π’Π΅ΠΏΠ΅Ρ€ΡŒ всС просто. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡƒΠΉΠ΄Π΅Ρ‚ Π² Ρ„ΠΎΠ½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ, ΠΌΡ‹ сохраним состояниС этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° вСрнСтся Π² ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ β€” вновь Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠΌ это состояниС:


β€” (void)applicationDidEnterBackground:(UIApplication *)application{

[self saveUserScore];

[self saveLevelToDisk];

[self pauseGameEngine];

}


β€” (void)applicationWillEnterForeground:(UIApplication *)application{

[self loadUserScore];

[self loadLevelFromDisk];

[self resumeGameEngine];

}


РазумССтся, Π½Π΅ всякоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ β€” это ΠΈΠ³Ρ€Π°. Но описанными ΠΏΡ€ΠΈΠ΅ΠΌΠ°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ сохранСния состояния ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² ΠΌΠ½ΠΎΠ³ΠΎΠ·Π°Π΄Π°Ρ‡Π½ΠΎΠΉ срСдС iOS.

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅

Π Π°Π·Π΄Π΅Π» 14.2.

14.7. Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ сСтСвыми соСдинСниями Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅

ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

Π’Ρ‹ примСняСтС экзСмпляры класса NSURLConnection для получСния Π΄Π°Π½Π½Ρ‹Ρ… с Π²Π΅Π±-сСрвСра ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π½Π° сСрвСр. Π’ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ вопрос: ΠΊΠ°ΠΊ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² ΠΌΠ½ΠΎΠ³ΠΎΠ·Π°Π΄Π°Ρ‡Π½ΠΎΠΉ срСдС iOS, Π½Π°Π΄Π΅ΠΆΠ½ΠΎ Π·Π°ΡΡ‚Ρ€Π°Ρ…ΠΎΠ²Π°Π²ΡˆΠΈΡΡŒ ΠΎΡ‚ сбоСв Π² соСдинСниях.

РСшСниС

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ошибок соСдинСния Π² Π±Π»ΠΎΠΊΠΎΠ²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ…, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… вашим ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ соСдинСний.

ΠžΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с прилоТСниями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ класс NSURLConnection, Π½ΠΎ, уходя Π² Ρ„ΠΎΠ½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ, Π½Π΅ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‚ Ρƒ iOS Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ с соСдинСниями Π½Π΅ составляСт Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Ρ‚Ρ€ΡƒΠ΄Π°. Рассмотрим Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ асинхронноС соСдинСниС, Ссли ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ сначала ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ Π² Ρ„ΠΎΠ½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ, Π° ΠΏΠΎΡ‚ΠΎΠΌ возвращаСтся Π² ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½Ρ‹ΠΉ. Π˜Ρ‚Π°ΠΊ, сдСлаСм запрос Π½Π° асинхронноС соСдинСниС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚, располоТСнный ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ URL (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° домашнСй страницС Apple):


β€” (BOOL) application:(UIApplication *)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{


NSString *urlAsString = @"http://www.apple.com";

NSURL *url = [NSURL URLWithString: urlAsString];

NSURLRequest *urlRequest = [NSURLRequest requestWithURL: url];

NSOperationQueue *queue = [[NSOperationQueue alloc] init];


[NSURLConnection

sendAsynchronousRequest: urlRequest

queue: queue

completionHandler: ^(NSURLResponse *response, NSData *data, NSError

*error) {


if ([data length] > 0 &&

error!= nil){

/* Π”Π°Π½Π½Ρ‹Π΅ Π²Π΅Ρ€Π½ΡƒΠ»ΠΈΡΡŒ. */

}

else if ([data length] == 0 &&

error!= nil){

/* ΠΠΈΠΊΠ°ΠΊΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ ΡΠ΅Ρ€Π²Π΅Ρ€Π° Π½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎ. */

}

else if (error!= nil){

/* ΠŸΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° ошибка. Π•Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. */

}


}];


self.window = [[UIWindow alloc] initWithFrame:

[[UIScreen mainScreen] bounds]];


self.window.backgroundColor = [UIColor whiteColor];

[self.window makeKeyAndVisible];

return YES;

}

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ цСлСсообразно Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ URL домашнСй страницы Apple Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-адрСсом, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ располоТСн ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΊΡ€ΡƒΠΏΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ». ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ, ΠΏΠΎΠΊΠ° вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΊΠ°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ большой Ρ„Π°ΠΉΠ», Ρƒ вас Π±ΡƒΠ΄Π΅Ρ‚ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ β€” ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² Ρ„ΠΎΠ½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π² ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½Ρ‹ΠΉ. Если ΠΆΠ΅ Ρƒ вас довольно быстроС соСдинСниС с Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ΠΎΠΌ, Π° Π²Ρ‹ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚Π΅ всСго ΠΎΠ΄Π½Ρƒ страницу Apple, Ρ‚ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ вСроятно, Ρ‡Ρ‚ΠΎ Π½Π° это ΡƒΠΉΠ΄Π΅Ρ‚ всСго 1–2 сСкунды.

Π‘ΡƒΠ΄ΡƒΡ‡ΠΈ Π² ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅, нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Ρ„Π°ΠΉΠ»Π°. Π’ Ρ…ΠΎΠ΄Π΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Home (Π”ΠΎΠΌΠΎΠΉ) ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Ρ„ΠΎΠ½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ. И Ρ‚ΠΎΠ³Π΄Π° Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ настоящСС Π²ΠΎΠ»ΡˆΠ΅Π±ΡΡ‚Π²ΠΎ! iOS автоматичСски приостановит процСсс Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π±Π΅Π· всякого вашСго Π²ΠΌΠ΅ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π°. Когда ΠΆΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ вновь ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ, Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° возобновится ΠΈ Π²Π°ΠΌ Π½Π΅ придСтся ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½ΠΈ Π΅Π΄ΠΈΠ½ΠΎΠΉ строки ΠΊΠΎΠ΄Π° для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ многозадачности Π² Ρ‚Π°ΠΊΠΎΠΉ ситуации.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим, Ρ‡Ρ‚ΠΎ происходит ΠΏΡ€ΠΈ синхронных соСдинСниях. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ запустится, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ большой Ρ„Π°ΠΉΠ» Ρ‡Π΅Ρ€Π΅Π· Π³Π»Π°Π²Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ (ΠΊΡ€Π°ΠΉΠ½Π΅ порочная ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°, Π½ΠΈΠΊΠΎΠ³Π΄Π° Ρ‚Π°ΠΊ Π½Π΅ Π΄Π΅Π»Π°ΠΉΡ‚Π΅ Π² Π±ΠΎΠ΅Π²ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅!):


β€” (BOOL) application:(UIApplication *)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{


/* Π—амСняСм этот URL ΡΡΡ‹Π»ΠΊΠΎΠΉ Π½Π° ΠΊΡ€ΡƒΠΏΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ». */

NSString *urlAsString = @"http://www.apple.com";

NSURL *url = [NSURL URLWithString: urlAsString];

NSURLRequest *urlRequest = [NSURLRequest requestWithURL: url];

NSError *error = nil;


NSData *connectionData =

[NSURLConnection sendSynchronousRequest: urlRequest

returningResponse: nil

error:&error];


if ([connectionData length] > 0 &&

error == nil){


}

else if ([connectionData length] == 0 &&

error == nil){


}

else if (error!= nil){


}


self.window = [[UIWindow alloc] initWithFrame:

[[UIScreen mainScreen] bounds]];


self.window.backgroundColor = [UIColor whiteColor];

[self.window makeKeyAndVisible];

return YES;

}


Если Π²Ρ‹ запуститС это ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Ρ‚Π΅ Π΅Π³ΠΎ Π² Ρ„ΠΎΠ½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ, Ρ‚ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π½Π° Π·Π°Π΄Π½ΠΈΠΉ ΠΏΠ»Π°Π½ ΠΎΡ‚Ρ…ΠΎΠ΄ΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ графичСский ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс, Π½ΠΎ Π²ΠΎΡ‚ ядро прилоТСния Π½ΠΈΠΊΡƒΠ΄Π° ΠΈΠ· ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ° Π½Π΅ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ ΠΈ Π½ΡƒΠΆΠ½Ρ‹Π΅ сообщСния Π΄Π΅Π»Π΅Π³Π°Ρ‚Π° β€” applicationWillResignActive: ΠΈ applicationDidEnterBackground: β€” Ρ‚Π°ΠΊ ΠΈ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹. Π― ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ» Ρ‚Π°ΠΊΠΎΠΉ ΠΎΠΏΡ‹Ρ‚ Π½Π° iPhone.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ для синхронной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΌΡ‹ потрСбляСм Ρ‚Ρƒ долю ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, которая отводится Π³Π»Π°Π²Π½ΠΎΠΌΡƒ ΠΏΠΎΡ‚ΠΎΠΊΡƒ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π°Π²ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π»ΠΈΠ±ΠΎ асинхронно Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Π² Π³Π»Π°Π²Π½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅, ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ продСмонстрировано Ρ€Π°Π½Π΅Π΅, Π»ΠΈΠ±ΠΎ синхронно Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΈΡ… Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠ°Ρ….

ВСрнСмся ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ ΠΊΠΎΠ΄Π°. Если ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΆΠ΅ большой Ρ„Π°ΠΉΠ» синхронно, Π² глобальной ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ, Ρ‚ΠΎ с ΡƒΡ…ΠΎΠ΄ΠΎΠΌ прилоТСния Π² Ρ„ΠΎΠ½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ соСдинСниС Π±ΡƒΠ΄Π΅Ρ‚ приостановлСно ΠΈ возобновится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ послС возвращСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ: