我正在尝试理解 block 。当直接传递给方法时,我知道如何正常使用它们。我现在感兴趣的是获取一个 block ,将其存储(比如说)在一个实例变量中并稍后调用它。
block 编程指南听起来我可以通过使用 Block_copy/retain 来复制 block 来做到这一点,但是当我尝试运行它时我的程序崩溃了。
- (void) setupStoredBlock
{
int salt = 42;
m_storedBlock = ^(int incoming){ return 2 + incoming + salt; };
[m_storedBlock retain];
}
我稍后尝试调用它:
- (void) runStoredBlock
{
int outputValue = m_storedBlock(5);
NSLog(@"When we ran our stored blockwe got back: %d", outputValue);
[m_storedBlock release];
}
有人有什么见解吗? (或者,有什么我没有得到的 block 吗?)
非常感谢!
最佳答案
你会想要这样做:
- (void) setupStoredBlock
{
int salt = 42;
m_storedBlock = Block_copy(^(int incoming){ return 2 + incoming + salt; });
}
关于objective-c - 复制 block (即 : copying them to instance variables) in Objective-C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2659072/