/* Π’Π΅ΠΏΠ΅ΡΡ ΡΠΎΡΡΠΈΡΡΠ΅ΠΌ ΡΠΈΡΠ»Π°. */
[randomNumbers sortUsingComparator:
^NSComparisonResult(id obj1, id obj2) {
NSNumber *number1 = (NSNumber *)obj1;
NSNumber *number2 = (NSNumber *)obj2;
return [number1 compare: number2];
}];
}
});
dispatch_async(dispatch_get_main_queue(), ^{
if ([randomNumbers count] > 0){
/* ΠΠ±Π½ΠΎΠ²Π»ΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, Π·Π°Π΄Π΅ΠΉΡΡΠ²ΡΡ ΡΠΈΡΠ»Π°
ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° randomNumbers. */
}
});
});
}
Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» GCD Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΌ ΠΈΠ»ΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ Π±Π»ΠΎΠΊΠΎΠ² ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ. Π ΡΠ°Π·Π΄Π΅Π»Π΅ 7.9 Π²Ρ Π½Π°ΡΡΠΈΡΠ΅ΡΡ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°ΡΡ Π±Π»ΠΎΠΊΠΎΠ²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈ Π³ΠΎΡΠΎΠ²ΠΈΡΡ ΠΈΡ ΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΡΠΊΠΎΠΉ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ Π²Π°ΠΌ ΠΈΠ·ΡΡΠΈΡΡ ΡΠ°Π·Π΄Π΅Π»Ρ 7.7. ΠΈ 7.8, Π³Π΄Π΅ Π³ΠΎΠ²ΠΎΡΠΈΡΡΡ ΠΎ ΠΏΡΠΎΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π² GCD.
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅
Π Π°Π·Π΄Π΅Π»Ρ 7.4, 7.7 ΠΈ 7.8.
7.7. ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ ΠΏΠΎΡΠ»Π΅ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ GCD
ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
Π’ΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠ΄, Π½ΠΎ ΠΏΠΎΡΠ»Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ. ΠΠ°Π΄Π΅ΡΠΆΠΊΡ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ GCD.
Π Π΅ΡΠ΅Π½ΠΈΠ΅
ΠΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ dispatch_after ΠΈ dispatch_after_f.
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅
Π Π°Π±ΠΎΡΠ°Ρ Ρ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠΌ Core Foundation, ΠΌΠΎΠΆΠ½ΠΎ Π°ΠΊΡΠΈΠ²ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅Π»Π΅ΠΊΡΠΎΡ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ΅ ΠΏΠΎ ΠΈΡΡΠ΅ΡΠ΅Π½ΠΈΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΊΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° performSelector: withObject: afterDelay:, ΠΎΡΠ½ΠΎΡΡΡΠ΅Π³ΠΎΡΡ ΠΊ ΠΊΠ»Π°ΡΡΡ NSObject. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
β (void) printString:(NSString *)paramString{
NSLog(@"%@", paramString);
}
β (BOOL) application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
[self performSelector:@selector(printString:)
withObject:@"Grand Central Dispatch"
afterDelay:3.0];
self.window = [[UIWindow alloc] initWithFrame:
[[UIScreen mainScreen] bounds]];
// Π’ΠΎΡΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΏΡΠΈΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΡΡΠ΅Π΄Π΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΡΠ·Π²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ printString: ΠΏΠΎΡΠ»Π΅ ΡΡΠ΅Ρ ΡΠ΅ΠΊΡΠ½Π΄Π½ΠΎΠΉ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ. Π’Ρ ΠΆΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡΡΠ΅ΡΡΠ²ΠΈΡΡ ΠΈ Π² GCD Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ dispatch_after ΠΈ dispatch_after_f. ΠΠ±Π΅ ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠΏΠΈΡΠ°Π½Ρ Π΄Π°Π»Π΅Π΅.
β’ dispatch_after β Π½Π°ΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π±Π»ΠΎΠΊΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π² Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΡΠΊΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΏΠΎ ΠΈΡΡΠ΅ΡΠ΅Π½ΠΈΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠΈΠΎΠ΄Π° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Π² Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄Π°Ρ . ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²:
β’ Π·Π°Π΄Π΅ΡΠΆΠΊΠ° Π² Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄Π°Ρ β ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄, Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΡΡ Π΄Π»ΠΈΡΡΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΡΠΊΠΎΠΉ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Π² GCD (ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌΠΎΠΉ Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅), ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π±Π»ΠΎΠΊΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ (Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡΠΉ Π² ΡΡΠ΅ΡΡΠ΅ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅);
β’ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΡΠΊΠ°Ρ ΠΎΡΠ΅ΡΠ΅Π΄Ρ β Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΡΠΊΠ°Ρ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ Π±Π»ΠΎΠΊΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ (ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ Π² ΡΡΠ΅ΡΡΠ΅ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅) ΠΏΠΎΡΠ»Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ (Π·Π°Π΄Π°Π²Π°Π΅ΠΌΠΎΠΉ Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅);
β’ Π±Π»ΠΎΠΊΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ β Π±Π»ΠΎΠΊΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π°ΠΊΡΠΈΠ²ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΡΠΊΠΎΠΉ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΠΏΠΎ ΠΈΡΡΠ΅ΡΠ΅Π½ΠΈΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄. ΠΠ»ΠΎΠΊΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 7.1).
β’ dispatch_after_f β Π½Π°ΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ Π½Π° ΡΠ·ΡΠΊΠ΅ C Π² GCD Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠΎ ΠΈΡΡΠ΅ΡΠ΅Π½ΠΈΠΈ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠΈΠΎΠ΄Π° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Π² Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄Π°Ρ . ΠΠ°Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠ΅ΡΡΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°:
β’ Π·Π°Π΄Π΅ΡΠΆΠΊΠ° Π² Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄Π°Ρ β ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄, Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΡΡ Π΄Π»ΠΈΡΡΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΡΠΊΠΎΠΉ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Π² GCD (ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌΠΎΠΉ Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅), ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π·Π°Π΄Π°Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ (Π·Π°Π΄Π°Π²Π°Π΅ΠΌΠ°Ρ Π² ΡΠ΅ΡΠ²Π΅ΡΡΠΎΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅);
β’ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΡΠΊΠ°Ρ ΠΎΡΠ΅ΡΠ΅Π΄Ρ β Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΡΠΊΠ°Ρ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π° ΡΡΠ½ΠΊΡΠΈΡ Π½Π° ΡΠ·ΡΠΊΠ΅ C (ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌΠ°Ρ Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅) ΠΏΠΎΡΠ»Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ (Π·Π°Π΄Π°Π²Π°Π΅ΠΌΠΎΠΉ Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅);
β’ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ β Π°Π΄ΡΠ΅Ρ Π² ΠΏΠ°ΠΌΡΡΠΈ, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΎΡΠ½ΠΎΡΡΡΠ΅Π΅ΡΡ ΠΊ Π½Π΅ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΠΎΠΌΡ ΠΌΠ°ΡΡΠΈΠ²Ρ Π΄Π°Π½Π½ΡΡ (ΠΊΡΡΠ΅). ΠΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ C. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΡΡΠΎΠΌ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΎΡΡ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ 7.4;
β’ ΡΡΠ½ΠΊΡΠΈΡ Π½Π° ΡΠ·ΡΠΊΠ΅ C β Π°Π΄ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° ΡΠ·ΡΠΊΠ΅ C, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π° ΠΏΠΎ ΠΈΡΡΠ΅ΡΠ΅Π½ΠΈΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠΈΠΎΠ΄Π° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ (ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅) Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΡΠΊΠΎΠΉ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ (ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌΠΎΠΉ Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅).
Π₯ΠΎΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ ΡΠ°ΡΡΡΠΈΡΡΠ²Π°ΡΡΡΡ Π² Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄Π°Ρ , ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ ΠΏΡΠΈ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΌΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ iOS, ΠΈ ΡΡΠ° Π²Π΅Π»ΠΈΡΠΈΠ½Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΌΠ΅Π½Π΅Π΅ ΡΠΎΡΠ½ΠΎΠΉ, ΡΠ΅ΠΌ ΡΠ°, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΠ΅ Π² Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄Π°Ρ .
Π‘Π½Π°ΡΠ°Π»Π° ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°Π±ΠΎΡ Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ dispatch_after:
β (BOOL) application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
double delayInSeconds = 2.0;
dispatch_time_t delayInNanoSeconds =
dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_queue_t concurrentQueue =
dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_after(delayInNanoSeconds, concurrentQueue, ^(void){
/* ΠΠ΄Π΅ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. */
});
// Π’ΠΎΡΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ Π² Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄Π°Ρ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΉ dispatch_after ΠΈ dispatch_after_f Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΠ½ΠΎΡΠΈΡΡΡΡ ΠΊ ΡΠΈΠΏΡ dispatch_time_t, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ dispatch_time ΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΎΠ±ΡΠ°Π·ΡΠ΅ ΠΊΠΎΠ΄Π°. ΠΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠΎΠ±ΡΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ dispatch_time.
β’ ΠΡΡ ΠΎΠ΄Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ β Π΅ΡΠ»ΠΈ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠΈΡΡ ΡΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠ΅ΡΠ΅Π· B, Π° ΠΏΡΠΈΡΠ°ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ (Delta Parameter) β ΡΠ΅ΡΠ΅Π· D, ΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΎΡ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π½ΠΎ B+D. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ DISPATCH_TIME_NOW, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ² ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π°ΡΡΠΎΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ, Π° ΠΏΠΎΡΠΎΠΌ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΡΠΈΡΠ°ΡΠ΅Π½ΠΈΠ΅, Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌΠΎΠ΅ ΠΊ ΡΡΠΎΠΌΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄Π΅Π»ΡΡΠ°-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ.
ΠΡΠΈΡΠ°ΡΠ΅Π½ΠΈΠ΅, Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌΠΎΠ΅ ΠΊ Π±Π°Π·ΠΎΠ²ΠΎΠΌΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, β ΡΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π΄Π°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π½Π°Π½ΠΎΡΠ΅ΠΊΡΠ½Π΄, Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌΡΡ ΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ Π·Π°Π΄Π°ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΠΊ 3 Ρ Π½Π°ΡΠΈΠ½Π°Ρ ΠΎΡ Π½Π°ΡΡΠΎΡΡΠ΅Π³ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ°, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
dispatch_time_t delay =
dispatch_time(DISPATCH_TIME_NOW, 3.0f * NSEC_PER_SEC);
Π Π²ΠΎΡ ΡΠ°ΠΊ Π·Π°Π΄Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠΈΠΎΠ΄ 0,5 Ρ ΠΎΡ Π½Π°ΡΡΠΎΡΡΠ΅Π³ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ°:
dispatch_time_t delay =
dispatch_time(DISPATCH_TIME_NOW, (1.0 / 2.0f) * NSEC_PER_SEC);
Π’Π΅ΠΏΠ΅ΡΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ dispatch_after_f:
void processSomething(void *paramContext){
/* ΠΠ΄Π΅ΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°. */
NSLog(@"Processingβ¦");
}
β (BOOL) application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
double delayInSeconds = 2.0;
dispatch_time_t delayInNanoSeconds =
dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_queue_t concurrentQueue =
dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_after_f(delayInNanoSeconds,
concurrentQueue,
NULL,
processSomething);
self.window = [[UIWindow alloc] initWithFrame:
[[UIScreen mainScreen] bounds]];
// Π’ΠΎΡΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅
Π Π°Π·Π΄Π΅Π»Ρ 7.1 ΠΈ 7.4.
7.8. ΠΠ΄Π½ΠΎΠΊΡΠ°ΡΠ½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ GCD
ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Π·Π° Π²Π΅ΡΡ ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΠΉ ΡΠΈΠΊΠ» ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΎΠ½ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π½Π΅ΠΎΠ΄Π½ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΠΈΠ· ΡΠ°Π·Π½ΡΡ ΡΠΎΡΠ΅ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ (Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΈΠ½Π³Π»ΡΠΎΠ½Π°).
Π Π΅ΡΠ΅Π½ΠΈΠ΅
ΠΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ dispatch_once.
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅
ΠΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΈΠ½Π³Π»ΡΠΎΠ½Π° β ΠΎΠ΄Π½Π° ΠΈΠ· ΡΠ°ΠΊΠΈΡ Π·Π°Π΄Π°Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ ΠΎΠ΄ΠΈΠ½, ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Π·Π° Π²Π΅ΡΡ ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΠΉ ΡΠΈΠΊΠ» ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π£Π²Π΅ΡΠ΅Π½, ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ.
GCD ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π΄Π»Ρ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ° ΠΊΠΎΠ΄Π° ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΠΎΡ ΠΊΠΎΠ΄. ΠΡΠ»ΠΈ GCD ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅Ρ, ΡΡΠΎ Π΄Π°Π½Π½ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠΆΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π»ΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΡ ΡΠ°Π½Π΅Π΅, ΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²Π½ΠΎΠ²Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΡΠΎΡ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°. Π€ΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ Π·Π°Π΄Π°Ρ, Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ dispatch_once. ΠΠ½Π° ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π΄Π²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°.