常见的几种崩溃原因
- 1、key为空
- 2、取用的key在当前class不存在
- 3、value为空
- 4、value值为基本属性类型
解决方案
一、key为空
在本类中实现valueForUndefinedKey
方法
- (id)valueForUndefinedKey:(NSString *)key {
return @"";
}
二、取用的key在当前class不存在
在本类中实现setValue: forUndefinedKey:
方法
过滤掉给不存在的键值赋值,运行程序就不会崩溃了
- (void)setValue:(id)value forUndefinedKey:(NSString *)key {
}
三、value为空
在setValue: forKey
中做判空处理
- (void)setValue:(id)value forKey:(NSString *)key {
if (value) {
[super setValue:value forKey:key];
}else {
[self setValue:@"" forKey:key];
}
}
四、value值为基本属性类型
添加[value isKindOfClass:[NSObject class]]
判断
- (void)setValue:(id)value forKey:(NSString *)key {
if (value) {
if ([value isKindOfClass:[NSObject class]]) {
[super setValue:value forKey:key];
}else {
[super setValue:[NSString stringWithFormat:@"%@",value] forKey:key];
}
}else {
[self setValue:@"" forKey:key];
}
}
网友评论