Подтвердить что ты не робот

Значение символа ^ в Objective C

Возможный дубликат:
Карет в объективе C
Что означает этот синтаксис ^ в Objective-C?

Я устал, ища смысл символа ^ в Objective C. Я видел это во множестве проектов, особенно в задних задачах. Я поставлю ссылку http://developer.apple.com/library/ios/#samplecode/StitchedStreamPlayer/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010092 и в MyStreamingMovieViewController.m вы можете найти следующее внутри - (IBAction)endScrubbing:(id)sender method.

timeObserver = [[player addPeriodicTimeObserverForInterval:CMTimeMakeWithSeconds(tolerance, NSEC_PER_SEC) queue:dispatch_get_main_queue() usingBlock:
                         ^(CMTime time)
                         {
                             [self syncScrubber];
                         }] retain];
    }

Также http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html

- (void)applicationDidEnterBackground:(UIApplication *)application
{
UIApplication*    app = [UIApplication sharedApplication];

bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
    // Clean up any unfinished task business by marking where you.
    // stopped or ending the task outright.
    [app endBackgroundTask:bgTask];
    bgTask = UIBackgroundTaskInvalid;
}];

// Start the long-running task and return immediately.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

    // Do the work associated with the task, preferably in chunks.

    [app endBackgroundTask:bgTask];
    bgTask = UIBackgroundTaskInvalid;
});
}

Пожалуйста, дайте мне знать ответ.

4b9b3361

Ответ 1

Этот символ используется для объявления блока.

Подробнее читайте здесь Темы программирования блоков

Дополнительная информация:

Объекты блока - это синтаксис и время выполнения C-уровня. Они есть аналогично стандартным функциям C, но в дополнение к исполняемому коду они также могут содержать переменные привязки к автоматическому (стек) или управляемая (куча) память. Следовательно, блок может поддерживать набор состояний (данные), которые он может использовать для воздействия на поведение при выполнении.

Вы можете использовать блоки для составления выражений функций, которые могут быть переданы к API, опционально сохраненный и используемый несколькими потоками. Блоки особенно полезно в качестве обратного вызова, поскольку блок несет как код, который должен быть выполнен при обратном вызове, и данные, необходимые в течение этого выполнение.

Ответ 2

Со второй страницы Темы программирования Apple Blocks:

Вы используете оператор ^, чтобы объявить блок-переменную и указать начало литерала блока. Тело самого блока содержится внутри {}, как показано в этом примере (как обычно, с C, указывает конец инструкции):

Ответ 3

Этот символ используется для объявления блока. Блоки являются адресными разделами кода, реализованного внутри (внутри других функций). Встроенная редакция может быть удобной, но настоящая причина, по которой блоки отличаются от обычных функций и указателей функций, заключается в том, что они могут ссылаться на локальные переменные из сферы действия функции, окружающей их реализацию, без вызова блока, который должен знать об окружающей области существования переменных.
Как реализуются блоки (и последствия)