Analizator statyczny Xcode 4 flaguje tę metodę jako posiadającą zbyt dużą wartość zwracaną, gdy wydaje się, że tak nie jest.Analizator statyczny Xcode i copyWithZone
- (id)copyWithZone:(NSZone *)zone
{
return [[[self class] allocWithZone:zone] initWithURL:self.url postString:self.postString];
}
Istnieje strzałka wskazująca słowo kluczowe return na wyrażenie następujące po nim, a druga z tego wyrażenia na ostrzeżenie analizatora. Oto Analiza statystyczna:
- sposób powraca obiektu celu C z +1 zachowują Impuls
- Przedmiot -autorelease wysłany komunikat
- obiekt zwrócony do dzwoniącego za posiadanie odniesienia (pojedynczy zachowują Ilość przeniesiona do wywołującego)
- obiekt zwrócony do dzwoniącego z +0 (nie będącego właścicielem) zachowują Impuls
- obiektu z +0 zachowują liczy zwrócone wywołującego gdzie +1 (posiadanie) zachowują się spodziewać Ilość
Czy analizator statyczny jest nieprawidłowy lub czy jest coś nie w porządku z tym kodem?
Wnioskiem, metoda -initWithURL:postString:
:
- (id)initWithURL:(NSURL *)u postString:(NSString *)p
{
if ((self = [super init]))
{
self.url = u;
self.postString = p;
}
return self;
}
I nadal się to ostrzeżenie, nawet po oczyszczeniu i przebudowa projektu.
AKTUALIZACJA: Analizator statyczny Xcode już nie sygnalizuje tego jako problem po uaktualnieniu do Xcode 4.2.
Hmm ... czy możesz również opublikować swój initWithURL: postString: method? – spacehunt
@spacehunt: Zaktualizowałem pytanie. – titaniumdecoy
@Jason: Właśnie utworzyłem nową klasę, korzystając z powyższego, i nie mogę tego zrobić z Xcode 4.0.2. Kiedy klikniesz na analizę "2. autorelease wysłanego obiektu", która strzała zostanie podświetlona? – spacehunt