Я получаю статическую ошибку анализа, и я не уверен, можно ли ее безопасно игнорировать или я могу улучшить дизайн, чтобы удалить его без особого изменение, это устаревший код.Статический анализ предупреждает о том, что init не вызывается при загрузке из NSKeyedUnarchiver unarchiveObjectWithData
Это НЕ использует ARC.
-(id) initCustom{
NSString* key = @"foo";
NSData* objectData = nil;
objectData = [[NSUserDefaults standardUserDefaults] objectForKey:key];
if(objectData != nil)
{
//If this path is taken the error occurs
self = [NSKeyedUnarchiver unarchiveObjectWithData:objectData];
}
else
{
self = [super init];
}
if (self)
{
//Static analysis warns here
m_fiz = [[NSString alloc] initWithString:@"bar"];
//Instance variable used while 'self' is not set to the result of '[(super or self) init....]'
}
}
Я понимаю, что [NSKeyedUnarchiver unarchiveObjectWithData:objectData]
заставит "initWithCoder"
называться. Этот объект реализует NSCoding
и имеет надлежащие методы, необходимые для использования NSCoding
.
Является ли это ложным положительным результатом статического анализа, или я могу сделать его лучше?
Я согласен, но причудливые вещи происходят в устаревшем коде :) спасибо! – xceph