Q:

Why am I allowed to write and use methods in an implementation that aren't declared in the header file in Objective-C?

@interface SomeClass : NSObject
{
}
@end

@implementation SomeClass
-(void) awesomeMethod600
{
}
@end

No error, and awesomeMethod600 works.

A:

The method declarations in the class interfaces are there for the compiler (to suppress warnings), since method lookup in Objective-C is done at runtime, and not compile time.

