Я только начинаю программировать на Objective-C, у меня есть опыт работы с C. У меня есть некоторый код (около 124 строк), который я хочу перенести на iOS (из OS X). Цель кода - создать URL-адрес, а затем открыть его в Mobile Safari. Поскольку приложение не имеет пользовательского интерфейса и его единственная цель - создание и открытие URL-адреса, я хочу, чтобы этот код выполнялся при запуске приложения.
Я провел некоторое исследование и обнаружил, что если я хочу, чтобы какой-то код выполнялся при запуске, я должен поместить его в файл "App_NameDelagate.m", в
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { ... }
сечение, между фигурными скобами. Проблема в том, что, когда я вставляю свой код и компилирую его (в XCode), я получаю около 7 ошибок и предупреждений, например, при каждом объявлении функции:
Вложенные функции отключены, используйте -fnested-functions для повторного включения
И в один прекрасный момент (когда я начинаю писать код для своих различных функций, и основная функция «если» заканчивается)
Управление достигает конца не пустой функции
Сам код состоит из 1 функции «если» и около 5 других функций, которые вызываются во время функции «если».
Я знаю, что сам код подходит, поскольку я использовал его для создания версии приложения для Mac с той же целью (для генерации и открытия URL-адреса), и он отлично работает.
Я понимаю, что некоторые вещи, связанные с Какао, меняются при переходе с OS X на iOS, например, для открытия URL-адреса в iOS используйте [UIApplication sharedApplication]
вместо [NSWorkspace sharedWorkspace]
, как в OSX. Так что я не думаю, что это проблема. Я также удалил стандартное объявление функции "main" в начале своего вставленного кода, поскольку знаю, что оно также объявлено в файле "main.m".
В версии моего приложения для Mac я мог поместить свой код прямо в файл "main.m", и код скомпилировался бы, и приложение работало бы просто отлично. На iOS я так понял, это не тот случай.
Любая помощь с этим будет принята с благодарностью, так как она сводит меня с ума!
Спасибо.
ОБНОВЛЕНИЕ: Строки, вызывающие проблемы с «вложенными функциями»:
int generateCrosswordNumber () {
int getDayNumber () {
bool checkIfSunday () {
void handleSunday () {
void normalDay () {
Под каждой из этих строк приведен код вызываемых функций. Для каждой функции есть еще одна фигурная скобка, которая закрывает ту, которая открыта в приведенных выше строках.
return YES
исправил ошибку function reaches end of non-void function
, отлично работал, спасибо!