2010-03-20 3 views
2

Это Objective-C, в Xcode для iPhone.Как вызвать статический метод bool в main.m

У меня есть метод в main.m:

int main(int argc, char *argv[]) { 
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 

//I want to call the method here// 

int retVal = UIApplicationMain(argc, argv, nil, nil); 
[pool release]; 
return retVal; 
} 

static BOOL do_it_all() { 
//code here// 
} 

Как вызвать метод do_it_all от main.m?

ответ

5

Вы можете назвать это нормально, если вы уже объявили функцию, прежде чем вы ее вызываете. Либо переместить определение функции выше main() или добавить следующую строку выше:

static BOOL do_it_all(); 

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

Когда вы добавляете прототипы функций в C/Objective-C/etc. они часто находятся в заголовке (.h), но если все в main.m, это, вероятно, слишком велико.

+0

У меня были круговые зависимости. Эта информация была очень полезной. Спасибо. Работа в main.m кажется jus немного отличается от стандартных файлов .h/.m. – AaronG

2

Как это:

do_it_all(); 

Это просто вызов функции C обычный. Но вам нужно либо переместить объявление do_it_all до main, либо переслать его; в противном случае main не узнает, о чем вы говорите.

+0

Как это сделать, чтобы объявить об этом. Я думал, что вы можете только объявить класс. – AaronG

+2

Форвардное объявление класса Objective-C (с '@ class') отличается. В этом случае речь идет о прототипе функции. –

Смежные вопросы