Очень простой блочный пример, подобный следующему:
#import <Foundation/Foundation.h>
typedef void(^printerBlock)(void);
printerBlock createPrinter(NSString *thingToPrint) {
return Block_copy(^{
NSLog(@"Printing: %@", thingToPrint);
});
}
int main (int argc, char const* argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
printerBlock pb = createPrinter(@"Testing string.");
pb();
[pool drain];
return 0;
}
распечатывает это:
2011-10-22 21:28:14.316 blocker[12834:707] Printing: Testing string.
, когда я компилирую программу как «блокировщик», поэтому должно быть несколькодругая причина - прямой вызов блока не работает.Некоторые причины могут быть связаны с тем, что представление, которое вы передаете, переиздано, и в этом случае вам поможет совет NSZombieEnabled.
Если это не тот случай, когда представление переусердствует, товам захочется запустить это в отладчике и точно определить, где что-то падает.
Нам, вероятно, придется увидеть больше вашего кода, чтобы выяснить, что на самом деле ломается.