谁能告诉客观c中块的执行流程?

Mah*_*eri -1 objective-c objective-c-blocks

嗨iam在objective-c中使用B​​locks.我刚学习语法,以及如何编写块.但我不明白执行流程.我用Google搜索了执行流程,我找不到.

我使用了以下代码:

@interface NSArray (Extended)
- (NSArray *)each:(void (^)(id))block;
@end

@implementation NSArray (Extended)
- (NSArray *)each:(void (^)(id object))block {
for(id mObject in self)
    block(mObject);
return self;
}
@end

int main (int argc, const char * argv[]) {
@autoreleasepool {

  NSArray *array = [NSArray arrayWithObjects:@"Number one", @"Number two", nil];
  [array each:^(id object) {
     NSLog(@"obj: %@", object);
  }];

}
return 0;
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释objective-c中块的执行流程是什么?

bbu*_*bum 5

当然.

  • 调用main()

  • 一个array被分配包含两个串

  • each:数组上调用该方法,传递一个以单个对象作为参数的块

  • each:使用在阵列中的所有对象方法迭代for()循环

    • 传递给each:方法的块对每个对象调用一次,对象是块的参数

    • 该块记录描述该对象的行


块在编译时捕获代码并在运行时捕获状态.在这种情况下,块不捕获任何状态.该块就像一个简单的C函数,每次调用时只打印一个日志行.