我的任务是清理代码库中的一些 Clang 错误。我对 iPhone 开发和 Objective C 非常陌生,但发现大多数问题都是微不足道的……不过,当我确定这很尴尬时,这个问题让我很困惑。
从 ZAttributedString 类:
- (id)initWithAttributedString:(ZAttributedString *)attr {
NSParameterAssert(attr != nil);
if ((self = [super init])) {
_buffer = [attr->_buffer mutableCopy];
_attributes = [[NSMutableArray alloc] initWithArray:attr->_attributes copyItems:YES];
}
return self;
}
clang 警告是“使用的实例变量,而 'self' 未设置为 '[super or self] init...]' 的结果,并突出显示了 attr 的 _buffer 属性的取消引用。
如果它有帮助,警告似乎还提到从这个方法调用时发现了问题:
- (id)copyWithZone(NSZone *)zone {
return [(ZAttributedString *)[ZAttributedString allocWithZone:zone] initWithAttributedString:self];
}
谁能向我解释一下这里的缺陷到底是什么?
蒂亚!