我已经看到了很多答案,但我找不到解决问题的方法。
我基本上有一个Class,我只使用类方法。我从不分配这门课。所以,我传递一个块并将其存储在类的.h上的静态上,如下所示:
static ErrorBlock _errorBlock;
我以这种方式存储:
_errorBlock = [errorBlock copy];
我收到errorBlock
作为方法的参数。经过一些计算,我调用了这样的块:
_errorBlock(error);
值得一提的是,我正在从类的类别中调用它。该应用程序基本上返回:
EXC_BAD_ACCESSS(code=2, adress = 0xc)
当我检查_errorBlock
值时,它是nil
。所以我的问题是,如何保持对块的实时引用?
答案 0 :(得分:0)
如果_errorBlock是“nil”,那么可以安全地说它被赋予了nil并且没有引用来保持它的存活。如果您在NSObject *reference = someObject
中创建引用并且someObject被释放,则您的引用指针仍将指向someObject曾经存在且不应该为nil的位置。检查分配块是否有问题,或者是否有人调用它。您也可以在调用之前检查_errorBlock是否存在。
答案 1 :(得分:0)
我能够解决这个问题,我完全删除了全局块的使用。目前我使用块我将它们作为参数传递。