Запустите iOS simulator из Xcode и получите черный экран, а затем Xcode зависает и не может остановить задачи


у меня возникли проблемы с запуском моего основного приложения для iPhone (во время прохождения лекций Stanford iTunes CS193p) в симуляторе iOS.

Я искал некоторое время (как Google и так), но не смог найти решение до сих пор. Есть много подобных ошибок, но решения, кажется, не исправить.

в Xcode я нажимаю кнопку "Выполнить". Он успешно компилируется и строится, запускает симулятор iOS, но никогда не загружает приложение. Только строка состояния вверху. С черным экраном.

Я только написал очень простой код (в соответствии с лекции) и не могу пройти мимо этой проблемы.

чтобы запутать дело больше, я написал веб-обертку (UIWebView) перед этими лекциями и это прекрасно работает. Но в коде почти нет никакой разницы. Все новые приложения, которые я создаю с нуля, все терпят неудачу с той же проблемой черного экрана.

если я нажму кнопку home на симуляторе и запустите приложение, оно отобразится. Но В Xcode не знаю, что происходит.

Это как если бы Xcode потерял возможность разговаривать с iOS Simulator и предполагает, что он работает (даже если я выйду из iOS simulator). Я пытаюсь выйти из Xcode, и он просит меня остановить задачи. Тогда он просто висит. Поэтому я должен принудительно перезапустить, чтобы выйти из Xcode.

я использую: OSX 10.8.2 Xcode 4.5.2 iOS симулятор 6.0

CalculatorAppDelegate.h

#import <UIKit/UIKit.h>

@interface CalculatorAppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;

@end

CalculatorAppDelegate.м

#import "CalculatorAppDelegate.h"

@implementation CalculatorAppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions (NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
    return YES;
}

- (void)applicationWillResignActive:(UIApplication *)application
{
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
}

- (void)applicationDidEnterBackground:(UIApplication *)application
{
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. 
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
}

- (void)applicationWillEnterForeground:(UIApplication *)application
{
// Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
}

- (void)applicationDidBecomeActive:(UIApplication *)application
{
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}

- (void)applicationWillTerminate:(UIApplication *)application
{
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}

@end

CalculatorViewController.h

#import <UIKit/UIKit.h>

@interface CalculatorViewController : UIViewController
@property (weak, nonatomic) IBOutlet UILabel *display;

@end

CalculatorViewController.м

#import "CalculatorViewController.h"

@implementation CalculatorViewController

@synthesize display = _display;

- (IBAction)digitPressed:(UIButton *)sender
{
    NSString *digit = [sender currentTitle];
NSLog(@"digit pressed = %@", digit);
}

@end
19 64

19 ответов:

Удивительно, но то, что сработало для меня, шло в меню симулятора iOS и нажимало "сбросить содержимое и настройки".

перед сбросом эмулятора сначала зайдите в свои проекты"проект навигатор" экран и под общие ->depoyment info экран проверьте, что основной интерфейс собственность-это правильно!

enter image description here

Я новичок в разработке приложений для iOS. Я практиковался в разработке приложений iOS с самого начала и при запуске очень простого приложения Hello World, я также столкнулся с той же проблемой, что только черный пустой экран появляется после создания и запуска приложения в iOS simulator. Каким-то образом, пытаясь найти решение проблемы, я случайно нажал Window-->Scale-->50% в симуляторе iOS, и это решило мою проблему. Затем я мог увидеть домашнюю страницу с моим приложением и нажать на значок приложения Я смог успешно запустить свое приложение. Версии приложений: Xcode 5.1 имитатор iOS: 7.1 OSX: 10.9.3

другое решение заключается в том, что если вы программно создаете пользовательский интерфейс в проекте Objective C, вам может потребоваться добавить некоторый код для раздувания представления, поэтому вам нужно будет добавить эти 3 строки, чтобы интерфейс окна взаимодействовал с кодом (внешние 2 фактически взаимодействуют с кодом, а другой изменит экран на белый, чтобы вы знали, что он работает).

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

self.window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.

...

self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];


return YES;
}

Это может произойти из-за неправильной установки информации о развертывании. (т. е. если ваша раскадровка не установлена в качестве основного интерфейса)

Если вы должны потерять точку входа в раскадровке или просто хотите изменить точку входа вы можете указать это в Interface Builder. Чтобы установить новую точку входа, необходимо сначала решить, какой ViewController будет выступать в качестве новой точки входа, и в Инспекторе атрибутов установите флажок начальная сцена.

вы можете попробовать: http://www.scott-sherwood.com/ios-5-specifying-the-entry-point-of-your-storyboard/

Решение 1 : вы можете Quit simulator и попробуйте снова.

решение 2 (рекомендуется) : перейти к iOS Simulator ->Reset Content and Settings...

Step 1

это будет всплывающее сообщение 'Are you sure you want to reset the iOS Simulator content and settings?'

Step 2

выберите Reset если вы хотите или иначе .

обратите внимание, что после сброса содержимого симулятора все приложения, установленные на симуляторе, будут удалены и он будет сброшен к первоначальным настройкам.

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

мне удалось найти исправление для этого. Это было найдено любезно этого сообщения в блоге:

http://vandadnp.wordpress.com/2012/03/18/xcode-4-3-1-cannot-attach-to-ios-simulator/

решение состоит в том, чтобы нажать cmd + shift+, (команда, shift, а затем запятая",").. это загружает некоторые параметры для выпуска или отладки.

измените отладчик с LLDB на GDB. Это устраняет проблему.

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

Если вы считаете, что это проблема симулятора, нажмите меню симулятора iOS. Выберите " сброс содержимого и настроек...". Нажмите Кнопку " Сброс."

Я не вижу вашего XIB и какие @свойства вы подключили в Interface Builder, но также может быть, что вы не загружаете свое окно или что ваше окно не является загрузка контроллера вида.

У меня была такая же проблема с Xcode... черный экран при запуске приложений, без отладки и щелчка будет блокировать Xcode.

Я, наконец, нашел проблему... после того, как симулятор не смог подключиться к Xcode, я посмотрел на свой файл etc/hosts и обнаружил, что несколько месяцев назад для решения другой проблемы я отредактировал файл хоста, чтобы сопоставить localhost с моим фиксированным IP вместо значения по умолчанию... моя ценность:

10.0.1.17 localhost

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

127.0.0.1 localhost

надеюсь, что это помогает.

Я делал то, что предлагает дуг ("сброс содержимого и настроек"), который работает, но занимает много времени, и это действительно раздражает... до недавнего времени я нашел совершенно случайно другое решение, которое намного быстрее и, кажется, также работает до сих пор! Просто нажмите cmd+L на своем симуляторе или перейдите в меню симулятора "Hardware - > Lock", которое блокирует экран, когда вы разблокируете экран, приложение работает так, как будто ничего не произошло :)

то, что произошло со мной, было типом класса не UIViewController для сценария, прикрепленного к моему контроллеру представления. Это было для UITabController..... Я по ошибке быстро создал неправильный тип класса.... Поэтому убедитесь, что класс, если правильный тип.. Надеюсь, это кому-то поможет. Я был в спешке и сделал эту ошибку.

просто сбросьте свой симулятор, нажав симулятор - > сбросить содержимое и настройки..

вы также можете перейти к Hardware - > reboot, затем Hardware - > Home и нажать на свое приложение

пожалуйста, убедитесь, что вы сделали это,если вы получаете черный экран после копирования раскадровку из другого проекта enter image description here

убедитесь, что установлен начальный контроллер вида

Я решил это только после удаления симуляторов с предыдущими версиями iOS.

У меня были черные экраны симуляторов только для iOS 11 sims. После попытки сброса, перезагрузки, переустановки и создания новой учетной записи Пользователя на моей машине я нашел это решение:

defaults write com.apple.CoreSimulator.IndigoFramebufferServices FramebufferRendererHint 3

найдено в этом ответе здесь:Xcode 9 iOS Simulator становится черным экраном после установки Xcode 10 beta