gpt4 book ai didi

ios - 我可以在 NSCache 中的 setObject 之后立即信任 objectForKey 吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:10:07 25 4
gpt4 key购买 nike

考虑这个示例代码(缓存是 NSCache 的一个实例):

- (id)objFromCache
{
if ([cache objectForKey:@"myObject"] == nil)
[cache setObject:[self generateObject] forKey:@"myObject"];

return [cache objectForKey:@"myObject"];
}

我应该相信这个代码吗?我的意思是,objectForKey:@"myObject" 是否会在 setObject:forKey:@"myObject" 之后立即返回 nil?如果是这样,我是否应该将 if 更改为 while

处理这种情况的最佳方法是什么?谢谢!

最佳答案

至少在多线程环境中你不能假定 NSCache 返回对象你刚刚插入的。

此外,如果第一次调用 [cache objectForKey:@"myObject"] 没有返回 nil,return 语句中的第二个可能返回 nil.

所以我会谨慎行事,把你的方法写成

- (id)objFromCache
{
id value = [cache objectForKey:@"myObject"];
if (value == nil) {
value = [self generateObject];
[cache setObject:value forKey:@"myObject"];
}
return value;
}

关于ios - 我可以在 NSCache 中的 setObject 之后立即信任 objectForKey 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16635467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com