7

Xcode 4 statik analizörü, bu durumun böyle görünmediğinde aşırı bir geri dönüş değerine sahip olarak bu yöntemi işaretler.Xcode static analyzer and copyWithZone

- (id)copyWithZone:(NSZone *)zone 
{ 
    return [[[self class] allocWithZone:zone] initWithURL:self.url postString:self.postString]; 
} 

bunu şu ifadeye dönüş anahtar kelimeden bir ok işaret yoktur ve başka o ifadeden analizörü uyarısına. İşte statik analiz:

  1. Yöntem alınma sayısı korumak +1 ile bir Objective-C nesnesi döndüren
  2. gönderilen Nesne -autorelease mesajı
  3. Nesne (tek muhafaza sayımı transfer bir sahibi referans olarak Arayana döndü
  4. sayımları 1 (sahip olduğu) Arayana sayımı beklenen korumak döndü tutan birçok arayan)
  5. Nesne +0 ile alınma sayısı korumak) bir 0 (non-armatörlük ile
  6. Nesne arayan döndü

Statik analiz cihazı yanlış mı, yoksa bu kodda bir sorun mu var? Talep üzerine


, -initWithURL:postString: yöntemi:

- (id)initWithURL:(NSURL *)u postString:(NSString *)p 
{ 
    if ((self = [super init])) 
    { 
     self.url = u; 
     self.postString = p; 
    } 
    return self; 
} 

Hatta temizlik ve projeyi yeniden sonra bu uyarıyı almaya devam ediyor.

UPDATE: Xcode statik çözümleyicisi artık Xcode 4.2'ye yükselttikten sonra bunu bir sorun olarak işaretlemiyor.

+0

Hmm ... ayrıca initWithURL: postString: yönteminizi de gönderebilir misiniz? – spacehunt

+0

@spacehunt: Soruyu güncelledim. – titaniumdecoy

+0

@Jason: Sadece yukarıdakileri kullanarak yeni bir sınıf oluşturdum ve bunu Xcode 4.0.2 ile kopyalayamıyorum. "2. Nesne gönderildi autorelease" analizini tıkladığınızda, hangi ok vurgulanır? – spacehunt

cevap

3

Bu, Xcode'ta bir hata. Kod tamamdır.

+0

Bu durum böyle görünüyor, çünkü Xcode 4.2 artık bu kodu bir sorun olarak işaretlemiyor. – titaniumdecoy