Реализация частного метода

Этот вопрос в основном любопытство, чем что-либо еще. Но в настоящее время я помещаю все свои частные методы сначала в свой @implementation, чтобы не создавать отдельную категорию в моем файле .m для этих методов. Пока частный метод был реализован до того, как его вызвал любой другой метод, все было хорошо. Я отчетливо помню, как Xcode предупреждал меня, если я пытался вызвать необъявленный метод до его реализации... по крайней мере, я думаю, что могу. Теперь я начинаю немного сомневаться в своем здравомыслии, потому что Xcode теперь, кажется, совершенно счастлив позволить мне вызывать любой необъявленный метод, если его реализация находится где-нибудь в пределах @implementation, даже если вызов происходит до реализации.

Это недавнее изменение, или я структурировал свой порядок методов, исходя из какого-то архаичного ограничения «C»?

То, как Xcode ведет себя сейчас, кажется, что нет необходимости создавать какую-либо категорию для частных методов. Лично я нахожу это довольно милым.

РЕДАКТИРОВАТЬ: я использую Xcode 4.3.1


person Aaron Hayman    schedule 10.03.2012    source источник
comment
дубликат объявления частного метода Objective-C   -  person jscs    schedule 10.03.2012


Ответы (1)


Видимо вы правы. xcode 4.2.1 выдает предупреждение, а 4.3.1 нет.

@implementation MyClass


- (void) callMyPrivateMethod {
    [self myPrivateMethod];   //<--- xcode 4.2.1 issues a warning here. 
    return;
}

- (void) myPrivateMethod {
    return; 
}

@end

(Я знаю, что нет необходимости в «возврате», но я немного староват в этом отношении.)

Однако обе версии создадут его правильно, и он будет работать, если вы не сделаете опечатку в имени метода.

person Hermann Klecker    schedule 10.03.2012
comment
Спасибо за подтверждение. Я был почти уверен, что этого не было в более ранних сборках Xcode, но приятно иметь подтверждение. Это также очень приятное дополнение. - person Aaron Hayman; 10.03.2012