запустите симулятор ios из xcode и получите черный экран, затем xcode зависает и не может остановить задачи

<p>у меня проблемы с запуском моего базового приложения для iphone (при прохождении лекций по stanford itunes cs193p) в симуляторе ios.</p><p>я долго искал (и google, и so), но пока не смог найти решение. есть много подобных ошибок, но решения, похоже, не исправляют это.</p><p>в xcode я нажимаю «запустить». он успешно компилируется и собирается, запускает симулятор ios, но не загружает приложение. только строка состояния вверху. с черным экраном.</p><p>я только написал очень простой код (следуя лекциям) и не могу обойти эту проблему. </p><p>чтобы еще больше запутать, я написал веб-оболочку <code>(uiwebview)</code> перед этими лекциями, и это прекрасно работает. но в коде практически нет различий. все новые приложения, которые я создаю с нуля, терпят неудачу с той же самой проблемой черного экрана. </p><p>если нажать кнопку «домой» на симуляторе и запустить приложение, оно отобразится. но xcode, похоже, не знает, что происходит.</p><p>как будто xcode утратил способность общаться с ios simulator и предполагает, что он работает (даже если я выйду из ios simulator). я пытаюсь выйти из xcode, и он просит меня остановить задачи. тогда просто висит. поэтому я вынужден перезапустить, чтобы выйти из xcode.</p><p>я использую: osx 10.8.2 xcode 4.5.2 ios simulator 6.0</p><p><strong> calculatorappdelegate.h </strong></p><pre><code>#import <uikit/uikit.h> @interface calculatorappdelegate : uiresponder <uiapplicationdelegate> @property (strong, nonatomic) uiwindow *window; @end </code></pre><p><strong> calculatorappdelegate.m </strong></p><pre><code>#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 </code></pre><p><strong> calculatorviewcontroller.h </strong></p><pre><code>#import <uikit/uikit.h> @interface calculatorviewcontroller : uiviewcontroller @property (weak, nonatomic) iboutlet uilabel *display; @end </code></pre><p><strong> calculatorviewcontroller.m </strong></p><pre><code>#import "calculatorviewcontroller.h" @implementation calculatorviewcontroller @synthesize display = \_display; - (ibaction)digitpressed:(uibutton *)sender { nsstring *digit = [sender currenttitle]; nslog(@"digit pressed = %@", digit); } @end </code></pre>

<p>удивительно, но у меня получилось перейти в меню ios simulator и нажать «сбросить содержимое и настройки».</p>

<p>перед сбросом эмулятора сначала перейдите на экран своих проектов "<em>project navigator</em>" и под экраном <em>general</em> -> <em>информация о депозите</em> проверьте, что свойство<strong> main interface </strong>правильно настроено!</p><p><img src="https://i.stack.imgur.com/65p0s.png" alt="enter image description here"></p>

<p>я новичок в разработке приложений для ios. я практиковался в разработке приложений для ios с самого начала, и во время работы с очень простым приложением hello world, я также столкнулся с той же проблемой, что после создания и запуска приложения в симуляторе ios появляется только черный пустой экран .... чтобы найти решение проблемы, я случайно щелкнул window -> scale -> 50% в симуляторе ios, и это действительно помогло решить мою проблему. я смог увидеть домашнюю страницу с моим приложением и щелкнуть значок приложения. смог запустить мое приложение успешно . версии приложения: xcode 5.1 ios simulator: 7.1 osx: 10.9.3</p>

<p>другое решение состоит в том, что если вы создаете пользовательский интерфейс программно в проекте objective c, то вам может понадобиться добавить некоторый код для раздувания представления, поэтому вам нужно будет добавить эти 3 строки, чтобы интерфейс окна взаимодействовал с кодом (внешний фактически взаимодействуют с кодом, а другой изменит экран на белый, чтобы вы знали, что он работает).</p><pre><code>- (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; } </code></pre>

<p>это может быть связано с неправильной настройкой информации о развертывании. (т.е. если ваша раскадровка не установлена в качестве основного интерфейса)</p>

<p><strong>решение 1:</strong> вы можете <code>quit simulator</code> и попробуйте снова.</p><p><strong>решение 2</strong> (рекомендуется): перейдите к <code>ios simulator</code> -> <code>reset content and settings...</code></p><p> <a href="https://i.stack.imgur.com/om6mn.png"> <img src="https://i.stack.imgur.com/om6mn.png" alt="step 1"> </a> </p><p>появится всплывающее окно с сообщением <code>'are you sure you want to reset the ios simulator content and settings?'</code></p><p> <a href="https://i.stack.imgur.com/k77cn.png"> <img src="https://i.stack.imgur.com/k77cn.png" alt="step 2"> </a> </p><p>выберите <code>reset</code>, если хотите, или кнопку <code>don't reset</code>.</p><p><em>обратите внимание, что после сброса содержимого симулятора все приложение, установленное на симуляторе, будет удалено, и оно вернется к исходным настройкам.</em></p>

<p>если вы потеряли свою точку входа в раскадровке или просто хотите изменить точку входа, вы можете указать это в интерфейсном разработчике. чтобы установить новую точку входа, вы должны сначала решить, какой viewcontroller будет действовать как новая точка входа, и в инспекторе атрибутов установить флажок «начальная сцена».</p><p>вы можете попробовать: <a href="http://www.scott-sherwood.com/ios-5-specifying-the-entry-point-of-your-storyboard/">http://www.scott-sherwood.com/ios-5-specifying-the-entry-point-of-your-storyboard/</a> </p>

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

<p>мне удалось найти решение для этого. это было найдено благодаря этой записи в блоге: </p><p> <a href="http://vandadnp.wordpress.com/2012/03/18/xcode-4-3-1-cannot-attach-to-ios-simulator/">http://vandadnp.wordpress.com/2012/03/18/xcode-4-3-1-cannot-attach-to-ios-simulator/</a> </p><p>решение состоит в том, чтобы нажать cmd + shift +, (команда, shift и затем запятую ",") .., который загружает некоторые опции для выпуска или отладки. </p><p>измените отладчик с lldb на gdb. это решает проблему.</p>

<p>вы также можете перейти в «оборудование» -> «перезагрузить», затем «оборудование» -> «домой» и нажать на свое приложение.</p>

<p>убедитесь, что установлен начальный просмотр контроллера </p>

<p>пожалуйста, убедитесь, что вы сделали это, если вы получаете черный экран после копирования раскадровки из другого проекта <a href="https://i.stack.imgur.com/jesi4.png"> <img src="https://i.stack.imgur.com/jesi4.png" alt="enter image description here"> </a> </p>

<p>пожалуйста, проверьте все ограничения для всех видов и просмотрите полную раскадровку. обычно это происходит из-за этого.</p><p>с уважением, arora</p>

<p>чтобы убедиться, что это проблема симулятора, посмотрите, сможете ли вы подключиться к симулятору с помощью совершенно нового проекта без изменения кода. попробуйте шаблон панели вкладок.</p><p>если вы считаете, что это проблема с симулятором, нажмите меню ios simulator. выберите «сбросить содержимое и настройки ...». нажмите «сброс».</p><p>я не вижу вашу xib и какие @properties, которые вы подключили в интерфейсном разработчике, но также может быть, что вы не загружаете свое окно, или что ваше окно не загружает ваш контроллер представления.</p>

<p>у меня была та же проблема с xcode ... черный экран при запуске приложений, отсутствие отладки и щелчков заблокировало бы xcode. </p><p>я, наконец, обнаружил проблему ... по той причине, что симулятор не может подключиться к xcode, я взглянул на мой файл etc/hosts и обнаружил, что несколько месяцев назад, чтобы решить другую проблему, я отредактировал файл host, чтобы сопоставить localhost с моим фиксированный ip вместо значения по умолчанию ... мое значение:</p><p>10.0.1.17 localhost</p><p>это должно работать, так как это мой ip, но меняя его обратно на фиксированный ip-адрес по умолчанию xcode ...</p><p>127.0.0.1 localhost </p><p>надеюсь это поможет.</p>

<p>я решил это только после удаления симуляторов с предыдущими версиями ios.</p>

<p>я делал то, что предлагает дуг («сбросить содержимое и настройки»), который работает, но занимает много времени, и это действительно раздражает ... пока я недавно не нашел совершенно случайное другое решение, которое намного быстрее и, кажется, до сих пор работает! просто нажмите cmd + l на вашем симуляторе или зайдите в меню симулятора «hardware -> lock», которое блокирует экран, когда вы разблокируете экран, приложение работает, как будто ничего не произошло :)</p>

<p>что случилось со мной, так это то, что тип класса не был uiviewcontroller для скрипта, прикрепленного к моему контроллеру представления. это было для uitabcontroller ..... я по ошибке быстро создал неправильный тип класса .... так что убедитесь, что класс, если правильный тип ... надеюсь, это кому-то поможет. я был в ажиотаже и совершил эту ошибку.</p>

<p>просто перезагрузите ваш симулятор, нажав simulator-> сбросить содержимое и настройки.</p>

<p>у меня были черные экраны симуляторов только для симов ios 11. после попытки сброса, перезагрузки, переустановки и создания новой учетной записи пользователя на моем компьютере я нашел следующее решение:</p><pre><code>defaults write com.apple.coresimulator.indigoframebufferservices framebufferrendererhint 3 </code></pre><p>нашел в этом ответе здесь: <a href="https://stackoverflow.com/questions/50941865/xcode-9-ios-simulator-becoming-black-screen-after-installing-xcode-10-beta">xcode 9 ios simulator становится черным экраном после установки xcode 10 beta</a> </p>