0

我想用队列之类的选择器扩展一个 NSMutableArray,例如

- (id)dequeue {
    id obj = nil;
    if ([self count] > 0) {
        id obj = [self objectAtIndex:0];
        if (obj != nil) {
            [self removeObjectAtIndex:0];
        }
    }
    return obj;
}

问题是我启用了 ARC 并且obj指向的数据在发布时removeObjectAtIndex:总是dequeue返回 null。

解决此问题的优雅方法是什么,或者我的方法完全错误?

编辑 这是由错字引起的,与ARC无关。

4

1 回答 1

5

您有一个简单的范围问题。内部obj变量与您返回的变量不同。将您的代码更改为此,它应该可以工作

- (id)dequeue {
    id obj = nil;
    if ([self count] > 0) {
        obj = [self objectAtIndex:0]; // removed "id" on this line since it created a new variable that and didn't assign to the one you were returning.
        if (obj != nil) {
            [self removeObjectAtIndex:0];
        }
    }
    return obj;
}
于 2013-09-19T11:22:18.173 回答