Smalltalk блоки в Objective-C? - PullRequest
       59

Smalltalk блоки в Objective-C?

11 голосов
/ 13 октября 2010

Поддерживает ли Objective-C блоки "a la Smalltalk"?

В Smalltalk блоки похожи на «замыкания» или «лямбда-выражения» или «безымянные функции», встречающиеся в других языках.

Ответы [ 2 ]

11 голосов
/ 13 октября 2010

Да: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Blocks/Articles/00_Introduction.html

Из коробки они поддерживаются только в версии Objective-C 2.0, которая поставляется с XCode 3.2 или более поздней версией. Это означает, что вам понадобится Snow Leopard, если вы хотите использовать официальные инструменты сборки. Потенциальный обходной путь для 10,5 описан здесь: http://thirdcog.eu/pwcblocks/#leoiphone

6 голосов
/ 13 октября 2010

Да, возьмите этот пример:

[[myString componentsSeparatedByString:@"\n"] enumerateObjectsWithOptions:NSEnumerationConcurrent usingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
    NSString *line = (NSString *)obj;
    //do what your going to do with line...
}];
...