You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过Interface Builder设置命名颜色触发NSInvalidUnarchiveOperationException崩溃求助

解决IBInspectable设置命名颜色导致的IBClass找不到崩溃问题

问题原因

在iOS 12及更早版本中,Xcode会用IBColor类序列化Storyboard中设置的Assets命名颜色,但该系统版本本身并不包含IBColor类,运行时反序列化时就会抛出NSInvalidUnarchiveOperationException异常,提示找不到IBColor类。

解决方案

方案1:代码中手动赋值命名颜色

不在Storyboard中设置该IBInspectable属性,改为在代码初始化阶段赋值:

- (void)awakeFromNib {
    [super awakeFromNib];
    self.color = [UIColor colorNamed:@"YourColorAssetName"];
}

方案2:添加IBColor空类实现

创建一个空的IBColor类,让系统反序列化时能找到对应的类,避免崩溃:

  1. 创建IBColor.h文件:
#import <UIKit/UIKit.h>

@interface IBColor : UIColor
@end
  1. 创建IBColor.m文件:
#import "IBColor.h"

@implementation IBColor
@end
  1. 确保这两个文件被添加到项目的正确Target中,参与编译。

补充说明

如果项目最低支持版本升级到iOS 13及以上,该问题会自动消失——iOS 13开始系统原生支持Assets命名颜色的反序列化,不再依赖IBColor类。

内容的提问来源于stack exchange,提问作者Stefano Andrean Salim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 10:32:41