如何解决在目标C中检查isKindOfClass是否多余?
即使在目标C中检查非id变量,是否也需要检查isKindOfClass吗?
团队成员编写了Swift代码。我正在审查。我真的需要检查条件中的isKindOfClass
还是多余?
-(void) checkCalorie:(NSMutableDictionary *) update {
NSString *foodInfoId = [update objectForKey:FOOD_INFO_ID];
double calorie = [[update objectForKey:CALORIE] doubleValue];
if ([foodInfoId isKindOfClass:[NSString class]] && calorie < 0)
{
calorie = 0.0;
// some logic
}
}
解决方法
我认为您应该使用为Objective-C实现的dynamic_cast
重构此代码。您可以检查this question以获得灵感。例如,使用this answer中的objc_dynamic_cast
,那么您将获得以下代码:
-(void)checkCalorie:(NSMutableDictionary *)update {
NSString *foodInfoId = objc_dynamic_cast([update objectForKey:FOOD_INFO_ID],NSString);
double calorie = [[update objectForKey:CALORIE] doubleValue];
if (foodInfoId != nil && calorie < 0) {
calorie = 0.0;
// some logic
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。