2012-03-27 4 views
6

Me di cuenta de que Xcode (o más precisamente el compilador Apple LLVM?) Ya no requiere declaraciones de métodos de envío. En otras palabras, el siguiente código construye sin advertencias:¿Desde cuándo Xcode ya no requiere declaraciones de métodos de envío y por qué?

@implementation Foo 

-(void) foo { 
    [self bar]; 
} 

-(void) bar {} 

@end 

Este utiliza para lanzar una advertencia en -foo diciendo que Foo podría no responder a -bar, ¿verdad? ¿Es el compilador más inteligente ahora o es algo más? Estoy usando Xcode 4.3.1 más Apple LLVM compilador 3.1.

+0

¿Estás seguro de que no has incluido la declaración 'bar' en el archivo de cabecera de' @interface Foo'? – hamstergene

+0

bastante seguro de hecho. – zoul

Respuesta

0

En mi XCode 4.2, la advertencia todavía está allí, además, cuando ARC está habilitado, es un error, no solo una advertencia.

+0

No si llama e implementa el método en el mismo archivo. Si hubiera hecho [foo bar] desde otro archivo, sería un error, pero parece estar bien en la situación anterior. – jrturton

+0

@jrturton Lo he implementado justo debajo en el mismo archivo y sigue siendo un error. – hamstergene

+2

Probar en 4.3? Me di cuenta de esto también, creo que es una característica del compilador – jrturton

Cuestiones relacionadas