相关疑难解决方法(0)

如何用Block简化回调逻辑?

假设我需要与提供协议的类进行通信,并在操作完成时调用委托方法,如下所示:

@protocol SomeObjectDelegate

@required
- (void)stuffDone:(id)anObject;
- (void)stuffFailed;

@end

@interface SomeObject : NSObject
{
}
@end
Run Code Online (Sandbox Code Playgroud)

现在,我已经决定,虽然我可以创建另一个类实现stuffDone:委托方法,但我决定将该进程封装到一个块中,该块写在靠近SomeObject实例化,调用的地方等等.我怎么可能做这个?或者换句话说,如果你看看这对块著名的文章(在替换回调段); 我如何在SomeObject中编写一个接受各种类型的方法completionHandler:?

cocoa objective-c objective-c-blocks

33
推荐指数
2
解决办法
2万
查看次数

在Objective-C中复制块(即:将它们复制到实例变量)

我想了解块.当直接传递给方法时,我得到了正常使用它们的方法.我现在感兴趣的是一个块,将它(例如)存储在一个实例变量中并稍后调用它.

块编程指南听起来像我可以做到这一点,通过使用Block_copy/retain来复制块,但是当我尝试运行它时,我崩溃了我的程序.

- (void) setupStoredBlock
{
    int salt = 42;
    m_storedBlock = ^(int incoming){ return 2 + incoming + salt; };
    [m_storedBlock retain];
}
Run Code Online (Sandbox Code Playgroud)

我试着稍后再说:

- (void) runStoredBlock
{
    int outputValue = m_storedBlock(5);
    NSLog(@"When we ran our stored blockwe got back: %d", outputValue);
    [m_storedBlock release];
}
Run Code Online (Sandbox Code Playgroud)

有人有任何见解吗?(或者,有什么东西我没有用积木?)

非常感谢你!

cocoa objective-c objective-c-blocks

19
推荐指数
3
解决办法
1万
查看次数

标签 统计

cocoa ×2

objective-c ×2

objective-c-blocks ×2