2011-03-03 15 views
5

Üzerinde çalıştığım bir projede, uyarı vermeyen bir yapı sistemi var.Hedef c kaynak dosyasımda uyarıları nasıl geçici olarak devre dışı bırakırım?

Ancak, çalışmak için uyarı gerektiren bazı kodlar var. İşte bir örnek

NSString* title = @""; 
if ([view respondsToSelector:@selector(title)]) { 
    title = [view title]; 
} 

sonra bazı Birlikte bu kod alanını sararak kod bloğu için devre dışı uyarılar çalıştı Googling

#pragma warning disable 
// my code 
#pragma warning restore 

işe yaramadı :(

Herkes nasıl yapacağını biliyor Xcode bu?

Herhangi bir yardım takdir edilmektedir.

-CV

+0

olası yinelenen http://stackoverflow.com/questions/194666/is-there-a-way-to-suppress-warnings-in-xcode –

cevap

2

Burada yapabileceğiniz bir çok şey var, ancak en basit olanı kodunuzu yeniden yazmak olabilir.

NSString* title = @""; 

if ([view respondsToSelector:@selector(title)]) { 
    title = [(id)view title]; 
} 

kadar uzun -title adında bir yöntem yerde var olduğu, sessiz kalacağım emin olmalıdır mesaj göndermeden önce id görünümü değişkeni Casting.

Başka bir seçenek:

NSString* title = @""; 

if ([view respondsToSelector:@selector(title)]) { 
    title = [view performSelector:@selector(title)]; 
} 

Bu herhangi bir yöntem adında bir başlık "görmek" için dosyayı gerektirmeyen içinde, yukarıdan biraz farklıdır; ama biraz daha endişeli.

Düzeltme: Bu yaklaşımlardan hiçbirinin aslında herhangi bir süre için uyarı vermediğini biliyorum, ancak onları bastırın. Bastırma, doğru bir şekilde yapıldığında, en azından genellikle göz ardı etmekten genellikle daha iyidir.

+0

Teşekkürler, bu işe yarayacak. Ama benim kodum aslında kodumun neden olduğu birçok uyarının bir örneğidir. #pragma uyarı devre dışı bırakma, – CVertex

+3

@ CVertex'den sonra olduğum şeydir: Hayır, uyarılarınızı düzelttiğinizden gerçekten eminim * gerçekten * sonra. –

+0

Uyarıları üretmemek için kodunuzu düzeltin. Her yerde. Her zaman bir yol vardır ve gerçekten buna değer. –

8
#pragma GCC diagnostic push 
#pragma GCC diagnostic ignored "-Wshadow-ivar" 
// your code 
#pragma GCC diagnostic pop 

Yaklaşık GCC pragma here öğrenebilir ve bir uyarı uyarı kodu, (sağda '=' düğmesine) günlüğünü genişletmek, en üstteki yapı seçmek Günlüğü Navigator (Command + 7) gitmek için ve altına gidin ve uyarı kodu

kullanabilirsiniz clang için bu [-Wshadow-ivar]


Düzenleme

gibi köşeli parantez içinde var

#pragma clang diagnostic push 
#pragma clang diagnostic ignored "-Wshadow-ivar" 
// your code 
#pragma clang diagnostic pop 
+0

sadece bir buçuk yıl sonra aynı aradı ve cevabımı buldum :) –