【发布时间】:2013-12-07 15:48:52
【问题描述】:
当我将块传递给其他方法时(不要用Block_copy 或@property(copy) 堆),
是复制还是引用传递?
我的意思是:
- (void)processBlock:(MyBlockType)block param:(int)param {
}
- (void)someMethod {
int b1 = 10;
int a1 = 9;
[self processBlock:^int(int number, id object) {
NSLog(@"block");
return 1 + a1;
} param:b1];
}
它是NSStackBlock - 因为它捕获“a”变量,所以它被分配在堆栈上。
当我将它们传递给另一个方法时,它是复制并存储在堆栈的processBlock's 部分,还是只是通过引用传递?
像这样:
copyOf myBlock
copyOf b1
processBlock
..........
..other variables..
a1
b1
myBlock
someMethod
..........
或者这样:
*myBlock (jast a pointer)
copyOf b1
processBlock
..........
..other variables..
a1
b1
myBlock
someMethod
..........
【问题讨论】:
-
看到这个link
-
@Greg 但我没有找到我的问题的答案。该链接仅描述了在堆上传递块的情况以及弹出堆栈的情况。我会知道 myBlock 实例的复制方式是否与 b1 变量值的复制方式相同。对不起,如果我没有正确理解答案。谢谢。
标签: ios iphone objective-c objective-c-blocks