Как запустить проект iPhone 3.1.3 в Xcode 3.2.3 (бета-версия iPhone SDK 4) - PullRequest
4 голосов
/ 14 апреля 2010

У меня большие проблемы с тех пор, как я скачал бета-версию iPhone SDK 4.0. Хорошо, я только начал смотреть на разработку iPhone несколько недель назад, но я не могу понять, как Xcode должен работать:

всякий раз, когда я начинаю новый проект, я выбираю шаблон, такой как «Приложение на основе представления» или около того. Теперь целью всегда будет (по крайней мере, я нигде не нашел предпочтения!) Последняя версия SDK: 4.0. Но потом: переключение цели, скажем, на 3.1.3, файлы шаблонов, похоже, содержат ошибки! Запуск такого пустого приложения приводит к исключению:

Завершение работы приложения из-за отсутствия связи исключение NSUnknownKeyException, причина: [...] этот класс не является ключевым значение, соответствующее кодированию для ключа RootViewController

Причина, по-видимому, в том, что сгенерированный MainWindow.xib имеет "выход для ссылки" для rootViewController рядом с viewController ...

больной

Теперь мой (глупый) вопрос: как мне разработать приложение НЕ для последнего SDK, но стандартного 3.1.3 SDK? Другими словами: я ожидал бы, что Xcode не только запросит тип проекта в окне New Project, но также и для моей желаемой целевой платформы для генерации правильных шаблонов !!

Прав ли я, что шаблоны, созданные с помощью этого шага, недопустимы для любой другой цели, кроме 4.0? Как это может быть ??

... Я хочу вернуть «Затмение»! Вздох

Кто-нибудь может мне помочь, пожалуйста?

Ответы [ 5 ]

2 голосов
/ 06 апреля 2011

На всякий случай, если кто-то ищет это.

Просто проверьте, реагирует ли окно в первую очередь на функцию. Если это так (4.0 и выше), то используйте его, иначе сначала используйте версию до 4.0.

if([self.window respondsToSelector:@selector(rootViewController)]) {
    self.window.rootViewController = self.viewController;        
} else {
    [self.window addSubview :self.viewController.view];        
}
1 голос
/ 29 января 2011

Решение, которое я нашел, состояло в том, чтобы вручную добавить мой Вид в окно в didFinishLaunchingWithOptions вместо того, чтобы полагаться на соединение Interface Builder. Кажется, что подключение rootViewController с iOS4 IB приводит к сбою приложения при развертывании в 3.x (для меня 3.1.3).

Итак, сначала откройте IB, щелкните правой кнопкой мыши Window и убедитесь, что «rootViewController» не подключен. Тогда в вашем AppDelegate у вас должно быть что-то вроде

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [self.window addSubview:navigationController.view];
    [self.window makeKeyAndVisible];

    return YES;
}

Это для того, если ваш основной вид - навигационный контроллер; если это не так, измените addSubview соответственно.

1 голос
/ 14 апреля 2010

Простой: не используйте бета-версию SDK, которая предназначена на данном этапе для разработки приложений для невыпущенной версии ОС и о которой вы согласились с NDA.

Так что скачайте выпущенную версию SDK и будьте счастливы.

0 голосов
/ 21 апреля 2011

Я думаю, что у Франсуа отличный ответ.

Я также новичок в Xcode и работал над различными учебными пособиями, используя Xcode 3.2.6 и тестирование на устройстве iOS 3.1.3. Обучающие программы были для iOS 4.3, и все они начинаются с выбора «приложения на основе представления». Когда я тестировал учебники, они работали в симуляторе, но не на устройстве. Я предполагаю, что это верно для SDK 4, но я сам не пробовал.

Сначала я получил сообщение об ошибке: «... указывает минимальную версию ОС 4.3, которая слишком высока для установки на iPhone».

Многие другие люди обращались к этому, но это исправили, перейдя в Project> Edit Project Settings, выбрав вкладку Build, прокрутив вниз до раздела Deployment и изменив поле «Development iOS цели», чтобы оно было таким же, как iOS на Устройство.

Затем на телефоне запускались учебные приложения, но отображался только пустой экран, и я получал сообщение об ошибке: «SIGABRT» и «NSException» - даже когда я только пытался запустить простое приложение HelloWorld. Это было вызвано тем, что self.window.rootViewController = self.viewController не поддерживается iOS 3.

Чтобы исправить это, перейдите к файлу ___ Delegate.m и замените строку "self.window.rootViewController = self.viewController" элегантным решением Франсуа:

 if([self.window respondsToSelector:@selector(rootViewController)]) {
    self.window.rootViewController = self.viewController;        
} else {
    [self.window addSubview :self.viewController.view];        
}

Теперь шаблон приложения на основе View в SDK 3.2 работает для iOS 3 и 4.

0 голосов
/ 02 марта 2011

Ответ на вопрос, который я искал, выглядит следующим образом:

Это невозможно.

Чтобы разработать для определенного выпуска iOS, установите соответствующий Xcode. Apple, очевидно, не знает людей, которые хотят разрабатывать для нескольких целевых платформ одновременно. : - (

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...