1

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

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

static ErrorBlock _errorBlock;

我是这样存储的:

_errorBlock = [errorBlock copy];

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

   _errorBlock(error);

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

EXC_BAD_ACCESSS(code=2, adress = 0xc)

当我检查_errorBlock值时,它是nil. 所以我的问题是,我怎样才能保持对块的实时引用?

4

2 回答 2

0

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

于 2012-11-12T13:45:22.893 回答
0

如果 _errorBlock 为“nil”,可以肯定地说它被分配了 nil 并且没有任何引用来保持它的活动状态。如果您像 in 一样创建引用NSObject *reference = someObject并且 someObject 被释放,您的引用指针仍将指向 someObject 曾经存在且不应为 nil 的位置。检查分配块是否有问题,或者它是否被调用。此外,您可能想在调用之前检查 _errorBlock 是否存在。

于 2012-11-05T15:36:28.517 回答