静的解析エラーが発生しましたが、安全に無視できるかどうか、または設計を改善して変更、これはレガシーコードです。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