I noticed that Xcode (or more precisely the Apple LLVM compiler?) does not longer require forward method declarations. In other words, the following code builds without warnings:
@implementation Foo
-(void) foo {
[self bar];
}
-(void) bar {}
@end
This used to throw a warning in -foo saying that Foo might not respond to -bar, right? Is the compiler smarter now or is this something else? I’m using Xcode 4.3.1 plus Apple LLVM compiler 3.1.
This has definitely changed, and it looks like such forward declarations are not required in Xcode 4.3 & later. Cf. Private Methods in Objective-C, in Xcode 4.3 I no longer need to declare them in my implementation file ?.
In my XCode 4.2, the warning is still there, moreover, when ARC is enabled, it is an error, not just a warning.
来源:https://stackoverflow.com/questions/9884533/since-when-does-xcode-no-longer-require-forward-method-declarations-and-why