Objective-C:使用块作为输出参数?

时间:2015-11-04 06:52:36

标签: objective-c

我知道这很奇怪而且很少使用,但只是我的好奇心,如何使用或不使用类型定义来做这个?

1 个答案:

答案 0 :(得分:-1)

我尝试了以下代码并获得了预期的输出。

@import Foundation;

void moo(dispatch_block_t *cow) {
        *cow = [^{ NSLog(@"Cow!"); } copy];
}

int main(int argc, char **argv)
{
        dispatch_block_t cow;
        moo(&cow);
        cow();

        return 0;
}

2015-11-04 09:03:06.829 a.out[50203:2157730] Cow!

块的副本是为了确保您不设置对方法/函数返回时可能变为无效的堆栈对象的引用。