保留/复制块弧[iOS]

时间:2012-11-05 15:13:03

标签: objective-c ios automatic-ref-counting block

我已经看到了很多答案,但我找不到解决问题的方法。

我基本上有一个Class,我只使用类方法。我从不分配这门课。所以,我传递一个块并将其存储在类的.h上的静态上,如下所示:

static ErrorBlock _errorBlock;

我以这种方式存储:

_errorBlock = [errorBlock copy];

我收到errorBlock作为方法的参数。经过一些计算,我调用了这样的块:

   _errorBlock(error);

值得一提的是,我正在从类的类别中调用它。该应用程序基本上返回:

EXC_BAD_ACCESSS(code=2, adress = 0xc)

当我检查_errorBlock值时,它是nil。所以我的问题是,如何保持对块的实时引用?

2 个答案:

答案 0 :(得分:0)

如果_errorBlock是“nil”,那么可以安全地说它被赋予了nil并且没有引用来保持它的存活。如果您在NSObject *reference = someObject中创建引用并且someObject被释放,则您的引用指针仍将指向someObject曾经存在且不应该为nil的位置。检查分配块是否有问题,或者是否有人调用它。您也可以在调用之前检查_errorBlock是否存在。

答案 1 :(得分:0)

我能够解决这个问题,我完全删除了全局块的使用。目前我使用块我将它们作为参数传递。