Что означает этот синтаксис карета ^ с пустым символом с обеих сторон? [дубликата]

9
задан Josh Caswell 5 July 2014 в 18:47
поделиться

3 ответа

Это «блок», новая функция, которую Apple добавила в C в Snow Leopard. Дополнительная информация доступна по адресу:

https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Blocks/Articles/00_Introduction.html

Блокировать объекты

Блокировать объекты (неофициально, « блоки ») являются расширением C, а также Objective-C и C ++, которые позволяют программистам легко определять автономные единицы работы. Блоки похожи на традиционные указатели на функции, но намного мощнее. Ключевые отличия:

Блоки могут быть определены встроенными как «анонимные функции». Блоки захватывают копии локальных переменных, доступные только для чтения, аналогично «замыканиям» в других языках. Это своего рода функциональность, обычная для интерпретируемых языков с динамической типизацией, но никогда прежде не была широко доступна для программистов на C. Apple опубликовала спецификацию языков блоков и нашу реализацию с открытым исходным кодом по лицензии MIT, добавила поддержку блоков в GCC 4.2 и clang и представила ее на рассмотрение как часть следующей версии языка программирования C.

Синтаксис

Блочная переменная выглядит как указатель на функцию, за исключением символа вставки («^») вместо звездочки («*»).

void (^my_block)(void);
23
ответ дан 4 December 2019 в 07:04
поделиться

И код для этой конкретной функции будет выглядеть примерно так:

[[UIApplication sharedApplication] setKeepAliveTimeout:5.0 handler:^{
    NSLog( @"This is my timeout handler" );
}];
8
ответ дан 4 December 2019 в 07:04
поделиться

Это означает, что требуется блок (кода, также известный как закрытие) см. http://developer.apple.com/mac/articles/cocoa/introblocksgcd.html Это нововведение в objective-c для OSX 10.6 и iOS 4

1
ответ дан 4 December 2019 в 07:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: