0

如何在弧中创建非保留对象数组?这些对象是该数组中的观察者。目前,我正在以这种方式创建这个数组:

_observers = CFBridgingRelease(CFArrayCreateMutable(NULL, 0, NULL));

问题是在此行中发出通知时代码有时会崩溃:

for (NSInteger i = [_observers count] - 1; i >= 0; i--) {

  // crash line
  id<ListModelObserver> observer = (id<ListModelObserver>)[_observers objectAtIndex:i];
  ...

我启用了僵尸,并在调试控制台中清楚地看到观察者对象类名。在 dealloc 期间,观察者对象应该已经从 _observers 中删除了……我唯一想到的是 _observers 数组以某种方式保留了它的对象。有任何想法吗?

4

1 回答 1

2

您正在释放数组,而不是对象。如果你想拥有一组指向对象的不安全无限制指针,那么要么使用 C 数组,要么设置一个不包含任何回调函数的 CFArrayRef。

于 2013-06-11T12:47:51.607 回答