2012-03-27 107 views
6

我注意到Xcode(或更确切地说是Apple LLVM编译器?)不再需要前向方法声明。换句话说,下面的代码生成无警告:从什么时候Xcode不再需要转发方法声明,为什么?

@implementation Foo 

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

-(void) bar {} 

@end 

这种用完就扔在-foo警告说,Foo可能不-bar回应,对不对?编译器现在更聪明还是这是别的?我使用Xcode 4.3.1和Apple LLVM编译器3.1。

+0

你确定你没有在'@interface Foo'的头文件中包含'bar'声明吗? – hamstergene 2012-03-27 07:41:21

+0

确实很确定。 – zoul 2012-03-27 08:47:57

回答

0

在我的XCode 4.2中,警告仍然存在,此外,启用ARC时,这是一个错误,而不仅仅是一个警告。

+0

如果您在同一个文件中调用并实现该方法,则不适用。如果他从另一个文件中完成了[foo bar],那么会出错,但在上面的情况下似乎很好。 – jrturton 2012-03-27 07:48:28

+0

@jrturton我在同一个文件中执行了它,它仍然是一个错误。 – hamstergene 2012-03-27 07:49:47

+2

试试4.3?我也注意到了这一点,我认为这是一个编译器功能 – jrturton 2012-03-27 07:51:01

相关问题