gpt4 book ai didi

ios - OSAtmonicCompareAndSwap32 给我一个我无法理解的警告

转载 作者:行者123 更新时间:2023-11-29 12:58:51 25 4
gpt4 key购买 nike

- (void)decrementActivityCount {
[self willChangeValueForKey:@"activityCount"];
bool success;
do {
int32_t currentCount = (int32_t)_activityCount;
success = OSAtomicCompareAndSwap32(currentCount, MIN(currentCount - 1, currentCount), &_activityCount);
//Incompatible pointer types passing 'NSInteger *' (aka 'long *') to parameter of type 'volatile int32_t *' (aka 'volatile int *')
} while(!success);
[self didChangeValueForKey:@"activityCount"];
[self updateNetworkActivityIndicatorVisibilityDelayed];
}

_activityCount 是一个 NSInteger

上面是我的代码和两个问题。

  1. OSAtmonicCompareAndSwap32 实际上在做什么?
  2. 如何删除警告?

最佳答案

What is the OSAtmonicCompareAndSwap32 actually doing?

它以原子方式比较 currentCount 和 _activityCount,如果它们相等,则将 _activityCount 设置为 MIN(currentCount - 1、currentCount).

如果比较相等则返回真。

所以,基本上它执行了一个原子递减 1。同样可以用更少的代码完成。

How can I remove the warning?

_activityCount 必须是 int32_t,或者

使用 64 位整数和 CompareAndSwap 的 64 位变体:

OSAtomicCompareAndSwap64

关于ios - OSAtmonicCompareAndSwap32 给我一个我无法理解的警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20288695/

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