断点报的错 线程的堆栈信息在项目中突然报了一个这样的错:
key 是空的,一般看堆栈信息一下就可以找到搞定的。
但是这个 Object UIImage 是在哪啊,新增的代码处完全没有设置啊,猜测是 Runtime 处某处增加的,接下来就是寻找啦。
-[NSCache(Safe) hookSetObject:forKey:]
|1343|NSCache invalid args hookSetObject:
[<UIImage:0x283868c60 symbol(system: xmark) {16.5, 14.5} baseline=2,
contentInsets={1, 2, 1, 2},
alignmentRectInsets={-2, 0, -1.5, 0} config=<scale=M,
pointSize=15, weight=Bold,
traits=(UserInterfaceIdiom = Phone, DisplayScale = 2,
DisplayGamut = P3, HorizontalSizeClass = Compact, VerticalSizeClass = Regular, UserInterfaceStyle = Light, UserInterfaceLayoutDirection = LTR, PreferredContentSizeCategory = L, AccessibilityContrast = Normal)
>>] forKey:[(null)]
找了很久,没有找到的
NSCache 不是字典,可以为空,但会有异常- (void)hookSetObject:(id)obj forKey:(id)key // 0 cost
{
if (obj && key) {
[self hookSetObject:obj forKey:key];
}else {
if (!obj) {
SFAssert(NO, @"NSCache invalid args hookSetObject:[%@]", obj);
}
// SFAssert(NO, @"NSCache invalid args hookSetObject:[%@] forKey:[%@]", obj, key);
}
}
以上先对 NSObjectSafe 这个库改下的。
如有发现问题,后续持续更新。
笔记来源辅助:
网友评论