Ошибка компиляции iOS: нет видимого @interface для 'CDVCommandDelegateImpl' объявляет селектор 'execute:'
После обновления до последней версии Кордовы (3.6.3) я получаю эту ошибку при запуске команды cordova build ios
.
Ошибка:
/Volumes/local.uhmuhm.net/projectxxx/htdocs/phonegap/src/Projectxxx/platforms/ios/Projectxxx/Classes/MainViewController.m:154:19: error: no visible @interface for 'CDVCommandDelegateImpl' declares the selector 'execute:' return [super execute:command];
Дополнительная информация:
-
Установленные платформы: android 3.6.3, ios 3.6.3
-
Я на последней версии xcode (6.0.1)
-
Все началось после обновления Кордовы до 3.6.3 (раньше я работал с 3.4.1)
Любая идея о том, как решить эту проблему?
![enter image description here]()
Ответы
Ответ 1
Основываясь на том, что сказал Назар, единственная разница в значении при создании нового приложения и сравнении существующей папки platforms/ios/Classes
заключалась в удалении метода execute
из MainViewController.m
.
![file diff]()
Это очищает ошибку сборки для меня.
Ответ 2
Я исправил ту же проблему с
cordova platform remove ios
cordova platform add ios
Ответ 3
Запустите cordova create
с новой версией кордовы, чтобы создать новый проект, а затем скопируйте AppDelegate
и MainViewController
поверх файлов в вашем "старом" проекте. После этого ошибка исчезла.
Ответ 4
У меня была такая же проблема сегодня. Я обнаружил, что файл CordovaLib/Classes/CDVCommandDelegateImpl.m не имеет этого:
- (BOOL)execute:(CDVInvokedUrlCommand*)command
{
return [_commandQueue execute:command];
}
как это было в том же файле в последней версии Cordova 3.5.0.
Поэтому я добавил этот фрагмент, а также соответствующее объявление в файле CDVCommandDelegateImpl.h:
- (BOOL)execute:(CDVInvokedUrlCommand*)command;
И теперь мое приложение работает! Не уверен, что это хорошее решение, но если оно работает, то это достаточно хорошо:)