ios - 为什么我的代码返回 null?

标签 ios objective-c

<分区>


这个问题似乎与 help center 中定义的范围内的编程无关。 .

关闭 9 年前

我想用像选择器这样的队列扩展一个 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 无关。

最佳答案

您有一个简单的范围问题。内部 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;
}

关于ios - 为什么我的代码返回 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18893191/

上一篇:ios - 从两个类访问同一段代码

下一篇:ios - 没有 cellidentifier ios 的 cellForRowIndexPath

相关文章:

iOS - Facebook - 您必须将此应用程序升级到 Graph API v2.x

objective-c - 我什么时候需要担心 iOS 应用程序中的线程安全?

ios - 非续订订阅恢复

ios - 从字符串中删除百分比转义字符

objective-c - 内存泄漏?还是乐器有毛病?

ios - 从数组中的数组访问对象(在模型类中定义)

objective-c - 创建全向 ScrollView

ios - 批量查询中超出速率限制

ios - 依次调用两个Alamofire函数

objective-c - 填充 NSMutableArray 供以后在 obj-c 中使用