после обновления быстро, у меня есть черный край [дубликат]

В Java все переменные, которые вы объявляете, на самом деле являются «ссылками» на объекты (или примитивы), а не самими объектами.

При попытке выполнить один метод объекта , ссылка просит живой объект выполнить этот метод. Но если ссылка ссылается на NULL (ничего, нуль, void, nada), то нет способа, которым метод будет выполнен. Тогда runtime сообщит вам об этом, выбросив исключение NullPointerException.

Ваша ссылка «указывает» на нуль, таким образом, «Null -> Pointer».

Объект живет в памяти виртуальной машины пространство и единственный способ доступа к нему - использовать ссылки this. Возьмем этот пример:

public class Some {
    private int id;
    public int getId(){
        return this.id;
    }
    public setId( int newId ) {
        this.id = newId;
    }
}

И в другом месте вашего кода:

Some reference = new Some();    // Point to a new object of type Some()
Some otherReference = null;     // Initiallly this points to NULL

reference.setId( 1 );           // Execute setId method, now private var id is 1

System.out.println( reference.getId() ); // Prints 1 to the console

otherReference = reference      // Now they both point to the only object.

reference = null;               // "reference" now point to null.

// But "otherReference" still point to the "real" object so this print 1 too...
System.out.println( otherReference.getId() );

// Guess what will happen
System.out.println( reference.getId() ); // :S Throws NullPointerException because "reference" is pointing to NULL remember...

Это важно знать - когда больше нет ссылок на объект (в пример выше, когда reference и otherReference оба указывают на null), тогда объект «недоступен». Мы не можем работать с ним, поэтому этот объект готов к сбору мусора, и в какой-то момент VM освободит память, используемую этим объектом, и выделит другую.

106
задан Mojtaba 17 September 2015 в 23:03
поделиться

11 ответов

Вы перенесли приложение из более ранней версии Xcode? Если это так, то Xcode теперь делает предположение о вашем размере экрана, и вам нужно указать фактический размер экрана во время выполнения.

Существует два способа:

a) Если вы используете экран запуска.

Вам не хватает файла LaunchScreen.storyboard. Создайте файл LaunchScreen.storyboard и добавьте его в свой проект.

b) Если вы не используете экран запуска.

Перейдите в настройки вашей цели и выберите «Общие», затем «Приложение» Иконки и запуск изображений. Теперь установите «Launch Screen File» на ваш «main.storyboard» (или, если необходимо, другой раскадровки)

171
ответ дан Gruntcakes 18 August 2018 в 23:39
поделиться
  • 1
    Добавление LaunchScreen.storyboard сделало трюк. – Mojtaba 17 September 2015 в 23:10
  • 2
    тоже работал на меня – Mikel Sanchez 20 September 2015 в 13:31
  • 3
    Каким должно быть содержимое LaunchScreen.storyboard? Я получаю сообщение о том, что раскадровки OSX не поддерживают целевое устройство & quot; iphone & quot; – adamF 24 September 2015 в 21:01
  • 4
    Вам не нужен файл LaunchScreen. Другой вариант - предоставить необходимые изображения запуска для каждого поддерживаемого размера экрана. – rmaddy 26 September 2015 в 18:36
  • 5
    В моем случае мне нужно изменить «Запустить экранный файл». на MainStoryBoard, если у вас нет Launch.screen.storyboard, чтобы он работал – Evan Lin 22 December 2015 в 04:25

Я использую xcode 7.2. Сначала я создал файл LaunchScreen.storyboard, так как предложил Permanganate , и это сработало! Тем не менее, мне не нужен экран запуска, поэтому я попытался настроить Main.storyboard как файл запуска экрана, и он сделал трюк!

5
ответ дан Community 18 August 2018 в 23:39
поделиться

В моем случае у меня есть несколько целей в проекте, и у каждого из них есть собственные изображения экрана запуска. Странно, что одна из целей выглядит хорошо, но у других есть черные полосы. Дело было во имя папки Launch внутри активов. Изменить имя на LaunchImage решает проблему.

1
ответ дан d.rozumeenko 18 August 2018 в 23:39
поделиться

Мое приложение не использует образ запуска. Установка «Запустить экранный файл» в файл «main.storyboard» исправила проблему для меня.

Этот параметр можно найти в разделе «Целевые -> Общие -> Иконки приложений и запуск изображений»

Используйте следующую ссылку для получения дополнительной информации: http://oleb.net/blog/2014/08/replacing-launch-images-with-storyboards/

28
ответ дан dreamer.psp 18 August 2018 в 23:39
поделиться
  • 1
    Это сработало для меня и кажется гораздо лучшим решением, чем добавление случайной новой раскадровки в ваш проект. – Jeremy Lee 23 October 2015 в 00:48
  • 2
  • 3
    Это решение не будет работать, если вам нужно предоставить пользовательский вид для запуска изображения, или изображение запуска отличается от начального контроллера раскадровки. – Himanshu Mahajan 16 December 2015 в 13:27

При переносе приложения с более ранней версии xCode на xCode 6 или xCode 7 вы столкнетесь с этой проблемой.

Для iOS 7 и более ранних версий разработчикам необходимо предоставить отдельные изображения запуска для всех размеров экрана , разрешения и ориентации, поддерживаемые их приложением.

В Xcode 6 или более поздней версии есть еще один вариант. Вы можете указать раскадровку, чей первоначальный контроллер будет использоваться в качестве экрана запуска приложения. Используйте следующие шаги:

  • Создайте пустой файл раскадровки с именем LaunchScreen.storyboard.
  • Перейдите к своим целевым настройкам, а на вкладке «Общие» выберите раскадровку как свою Запустите файл экрана в разделе «Иконки приложений и запуск изображений». Xcode добавит соответствующий ключ UILaunchStoryboardName в Info.plist вашего приложения. Когда этот ключ присутствует, Xcode будет устанавливать приоритет над любыми изображениями запуска, которые вы, возможно, установили.
  • Добавьте некоторые подпрограммы к виду вновь созданной раскадровки и поместите их с ограничениями. Когда вы запускаете приложение на устройстве, ОС должна использовать сцену в качестве экрана запуска.

Удалить старшее приложение из симулятора и очистить проект.

Cheers : -)

2
ответ дан Himanshu Mahajan 18 August 2018 в 23:39
поделиться

Перейдите в каталог активов и создайте новое изображение запуска iOS. затем в меню «Цель»> «Основные»> «Значки приложений» и «Запуск изображений»> «Запустить источник изображения» вы автоматически увидите новый стартовый образ, созданный в каталоге активов.

1
ответ дан Mohcine Belarrem 18 August 2018 в 23:39
поделиться

Перейдите к целевым настройкам в xcode в этом разделе, перейдите к значкам приложений и странице запуска изображений в этом разделе, выберите файл экрана запуска, вы увидите выпадающее значение, выберите значение CDVLaunchScreeen для значения файла запуска экрана

0
ответ дан Shankar Prasad 18 August 2018 в 23:39
поделиться

Не делайте ничего, что описано в более ранних ответах ...

Чтобы отобразить представление Контроллер, выполните следующий шаг:

Step 1 : Add the splash Screen for iPhone and iPad.

После этого эта ошибка не появится снова.

-1
ответ дан Shubham JAin 18 August 2018 в 23:39
поделиться

Для меня проблема в том, что я переношу свое приложение из более ранней версии Xcode, и в проекте отсутствует файл LaunchScreen.storyboard. Я только что создал LaunchScreen.storyboard и добавил его для запуска Screen File. Это сделал трюк.

16
ответ дан smapps 18 August 2018 в 23:39
поделиться

У меня такая же проблема в моем приложении. В моем приложении у меня есть несколько целей, добавленных в проект. Если я использую решение для развертывания раскадровки, то я могу видеть полный экран, но в моем случае изображение моего обеда выглядит размытым и растянутым на iPhone 4. Чтобы выйти из этой проблемы, я использовал решения LaunchImage. После этого все еще я столкнулся с той же проблемой. Я пробовал все вышеперечисленные решения. В конце я обнаружил, что мои png-изображения не включают разрешения ALPHA. После добавления новых изображений я могу видеть полноэкранные изображения.

2
ответ дан VDPATEL 18 August 2018 в 23:39
поделиться

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

Я пробовал решение раскадровки запуска, и да, это работает, но я не сделал хочу добавить новый файл, поэтому я решил это исправить:

  1. Скопировал мои изображения запуска в другую папку
  2. Удалил существующий ресурс LaunchImage
  3. Добавлен новый ресурс LaunchImage
  4. Добавлены изображения в новый LaunchImage

Вот и все!

0
ответ дан Wils 18 August 2018 в 23:39
поделиться