Realizar la advertencia del selector

Estoy recibiendo una advertencia

PerformSelector puede causar una fuga porque su selector es desconocido

En el codigo:

- (void) callDelegate: (SEL) selector withArg: (id) arg error: (NSError*) err { assert([NSThread isMainThread]); if([delegate respondsToSelector: selector]) { if(arg != NULL) { //this line the warning [delegate performSelector: selector withObject: arg withObject: err]; } else { //this line the warning [delegate performSelector: selector withObject: err]; } } else { NSLog(@"Missed Method"); } } 

Encabezamiento:

 @interface Topscore : UIViewController <NSObject> { // } 

Esta es una advertencia generada por el comstackdor porque -Wundeclanetworking-selector se usó durante la compilation y el recuento automático de references (ARC) está habilitado. Esto puede, en general, ignorarse de forma segura, ya que es obvio que el selector en la variable denominada "selector" se desconoce en el momento de compilation, ya que tendrá su valor asignado en time de ejecución.

Your if ... respondsToSelector: selector no funcionará porque su selector es solo el nombre del método. Para su caso, debe verificar

 if ([delegate respondsToSelector: @selector(method::)] 

y para el otro caso solo para el method:

De todos modos, puede suprimir la advertencia de esta manera:

 #pragma clang diagnostic push #pragma clang diagnostic ignonetworking "-Warc-performSelector-leaks" [self performSelector:nextView]; #pragma clang diagnostic pop 

También puede usar objc_msgSend en lugar de performSelector, como se describe aquí .

Puede agregar -Wno-arc-performSelector-leaks para WARNING_CFLAGS en la Build Settings . introduzca la descripción de la imagen aquí

Encontramos la solución aquí

La forma más fácil es agregar esta macro a su file pch. O file .m

 #pragma GCC diagnostic ignonetworking "-Wundeclanetworking-selector"