Search code examples
objective-ccategoriesprivate-methodsclass-extensions

Objective-C: Should I declare private methods?


I've been declaring private methods in class extensions, according to Best way to define private methods for a class in Objective-C.

But, I just realized that, in Xcode 4, if I leave out the declaration of a private method altogether and just implement it, the app compiles and runs without warning or error.

So, should I even bother declaring private methods in class extensions?

Why should we have to declare methods anyway? In Java, you don't... neither in Ruby.


Solution

  • A method definition only needs to be defined if the caller is declared before the method. For consistency I would recommend defining your private methods in the extension.

    -(void)somemethod
    {
    }
    
    -(void)callermethod
    {
        //No warning because somemethod was implemented already
        [self somemethod];
    }
    
    -(void)callermethod2
    {
        //Warning here if somemethod2 is not defined in the header or some extension
        [self somemethod2];
    }
    
    -(void)somemethod2
    {
    }