【问题标题】:Is NSDictionary Defined?NSDictionary 定义了吗?
【发布时间】:2011-05-10 17:18:21
【问题描述】:

我有一个 NSDictionary,它可能被设置在一个循环中。在循环结束时,我想知道字典是否已定义。这是一个例子:

NSDictionary *myDict;

for (int i=0; i < 100; i++){
    if (thisCondition){
        myDict = [NSDictionary dictionaryWithObjectsAndKeys:etc, nil];
    }
}

if (myDict) {
     [self doSomething];
}

不幸的是,myDict 的测试每次都通过,无论 myDict 是否已被分配。尝试将任何方法传递给 myDict,例如 [myDict count],会给出 exc_bad_access,因为它还没有被分配。所以这是一个无人区。

有没有办法做到这一点?我意识到我可以切换到 NSMutableDictionary,定义它,在循环中添加它,然后测试计数,但这不是我的偏好。

【问题讨论】:

    标签: objective-c nsdictionary alloc


    【解决方案1】:

    首先,确保将指针初始化为 nil:

    NSDictionary *myDict = nil;
    

    否则,您对有效指针的检查可能不起作用。

    【讨论】:

    • @Jakob Borg 为什么不可以?在 2^64 个案例中,有 1 个起作用。
    • 你应该在你的 if 子句中添加一个“break”——这样你就不必遍历其余的情况
    • @Nikolai 是的...嗯,.000000000000000005 % 成功率在经验上更接近于“将失败”而不是“可能失败”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多