我很少得到“NSInternalInconsistencyException'由于UICollectionViewLayoutAttributes不匹配,我的自定义collectionViewLayout出错,但据我所知,这些属性应该相等。 Apple是否希望我们缓存所有这些属性并返回相同的属性?
以下是两个有问题的layoutAttributes。正如您所看到的,它们对实际内存地址的期望相同。
<UICollectionViewLayoutAttributes: 0x1703e1f00> index path: (<NSIndexPath: 0xc00000000000000e> {length = 1, path = 0}); element kind: (DRSupplementaryViewKind); frame = (22 0; 61 25); alpha = nan; zIndex = 402;
<UICollectionViewLayoutAttributes: 0x1703e3600> index path: (<NSIndexPath: 0xc00000000000000e> {length = 1, path = 0}); element kind: (DRSupplementaryViewKind); frame = (22 0; 61 25); alpha = nan; zIndex = 402;
答案 0 :(得分:0)
这是一个有趣的事实,&#34; NaN == NaN&#34;的结果是什么?没错,这是假的。因此即使在两个layoutAttributes上调用isEquals,即使它们看起来相同,isEquals也会返回false,因为&#34; Nothing等于Nan - 甚至不是NaN本身!!!&#34;
这意味着[myLayoutAttribute isEqual:[myLayoutAttribute copy]]为false,如果其中一个浮点属性为NaN。是啊....
我希望这可以拯救别人的心灵弯曲我一直面临的痛苦。