Блоки на самом деле являются как типами C, так и типами Objective-C. Вы можете связать объекты с ними, используя API-интерфейсы среды выполнения objc, вы можете поместить их в коллекции ObjC и т. Д., И все же они все еще действительны в программах на языке C Это аккуратная хитрая работа по совместимости со стороны компилятора и пользователей среды выполнения :)

ел бы добавить функции, создав категорию для блоков Objective-C.

__block int (^aBlock)(int) = ^int( int n ){
    if( n <= 1 ) return n;
    return aBlock( n - 1 ) + aBlock( n - 2 );
};

Вместо того, чтобы просто позволить нормальный[aBlock copy], [aBlock retain], [aBlock release], [aBlock autorelease], Я мог бы сделать что-то вроде:

[aBlock mapTo:anArray];

Возможная категория

@interface UnknownBlockClass (map)

- (NSArray *)mapTo:(NSArray *)array_;

@end

Ответы на вопрос(5)

Ваш ответ на вопрос