复合赋值的左边表达式是一个未初始化的值。计算值也将是垃圾

The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage

当我 运行 构建我的 iOS 项目时,它抛出一个逻辑错误:复合赋值的左表达式是一个未初始化的值。计算值也将是垃圾。

这是扔在可以找到的 Yoga 包中 here

我查看了不同的 Stack Overflow 和 Github 线程,但我找不到任何有相同问题的人。

(performLayout ? layoutMarkerData.cachedLayouts
                   : layoutMarkerData.cachedMeasures) += 1;

这应该不会出现此错误。

之前从未使用过 Yoga,但我从错误中得出的最佳猜测是它试图增加未初始化的内存,基于 layoutMarkerData 似乎是 Layout Data 的一个实例:

struct LayoutData {
    int layouts;
    int measures;
    int maxMeasureCache;
    int cachedLayouts;
    int cachedMeasures;
    int measureCallbacks;
    std::array<int, static_cast<uint8_t>(LayoutPassReason::COUNT)>
    measureCallbackReasonsCount;
};

cachedLayoutscachedMeasures 都是没有默认值的整数,所以如果 LayoutData 是 default initialised 他们有内存中的任何值 a.k.a 垃圾。

所以我想解决方法是在您提供的行之前为它们分配一个值。