7

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:

  1. sposób powraca obiektu celu C z +1 zachowują Impuls
  2. Przedmiot -autorelease wysłany komunikat
  3. obiekt zwrócony do dzwoniącego za posiadanie odniesienia (pojedynczy zachowują Ilość przeniesiona do wywołującego)
  4. obiekt zwrócony do dzwoniącego z +0 (nie będącego właścicielem) zachowują Impuls
  5. 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.

+0

Hmm ... czy możesz również opublikować swój initWithURL: postString: method? – spacehunt

+0

@spacehunt: Zaktualizowałem pytanie. – titaniumdecoy

+0

@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

Odpowiedz

3

To błąd w Xcode. Kod jest w porządku.

+0

Wygląda na to, że tak jest, ponieważ Xcode 4.2 nie sygnalizuje już tego kodu jako problemu. – titaniumdecoy