В 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 освободит память, используемую этим объектом, и выделит другую.
Вы перенесли приложение из более ранней версии Xcode? Если это так, то Xcode теперь делает предположение о вашем размере экрана, и вам нужно указать фактический размер экрана во время выполнения.
Существует два способа:
a) Если вы используете экран запуска.
Вам не хватает файла LaunchScreen.storyboard. Создайте файл LaunchScreen.storyboard и добавьте его в свой проект.
b) Если вы не используете экран запуска.
Перейдите в настройки вашей цели и выберите «Общие», затем «Приложение» Иконки и запуск изображений. Теперь установите «Launch Screen File» на ваш «main.storyboard» (или, если необходимо, другой раскадровки)
Я использую xcode 7.2. Сначала я создал файл LaunchScreen.storyboard, так как предложил Permanganate , и это сработало! Тем не менее, мне не нужен экран запуска, поэтому я попытался настроить Main.storyboard как файл запуска экрана, и он сделал трюк!
В моем случае у меня есть несколько целей в проекте, и у каждого из них есть собственные изображения экрана запуска. Странно, что одна из целей выглядит хорошо, но у других есть черные полосы. Дело было во имя папки Launch внутри активов. Изменить имя на LaunchImage решает проблему.
Мое приложение не использует образ запуска. Установка «Запустить экранный файл» в файл «main.storyboard» исправила проблему для меня.
Этот параметр можно найти в разделе «Целевые -> Общие -> Иконки приложений и запуск изображений»
Используйте следующую ссылку для получения дополнительной информации: http://oleb.net/blog/2014/08/replacing-launch-images-with-storyboards/
При переносе приложения с более ранней версии xCode на xCode 6 или xCode 7 вы столкнетесь с этой проблемой.
Для iOS 7 и более ранних версий разработчикам необходимо предоставить отдельные изображения запуска для всех размеров экрана , разрешения и ориентации, поддерживаемые их приложением.
В Xcode 6 или более поздней версии есть еще один вариант. Вы можете указать раскадровку, чей первоначальный контроллер будет использоваться в качестве экрана запуска приложения. Используйте следующие шаги:
Удалить старшее приложение из симулятора и очистить проект.
Cheers : -)
Перейдите в каталог активов и создайте новое изображение запуска iOS. затем в меню «Цель»> «Основные»> «Значки приложений» и «Запуск изображений»> «Запустить источник изображения» вы автоматически увидите новый стартовый образ, созданный в каталоге активов.
Перейдите к целевым настройкам в xcode в этом разделе, перейдите к значкам приложений и странице запуска изображений в этом разделе, выберите файл экрана запуска, вы увидите выпадающее значение, выберите значение CDVLaunchScreeen для значения файла запуска экрана
Не делайте ничего, что описано в более ранних ответах ...
Чтобы отобразить представление Контроллер, выполните следующий шаг:
blockquote>
Step 1 : Add the splash Screen for iPhone and iPad.
После этого эта ошибка не появится снова.
Для меня проблема в том, что я переношу свое приложение из более ранней версии Xcode, и в проекте отсутствует файл LaunchScreen.storyboard. Я только что создал LaunchScreen.storyboard и добавил его для запуска Screen File. Это сделал трюк.
У меня такая же проблема в моем приложении. В моем приложении у меня есть несколько целей, добавленных в проект. Если я использую решение для развертывания раскадровки, то я могу видеть полный экран, но в моем случае изображение моего обеда выглядит размытым и растянутым на iPhone 4. Чтобы выйти из этой проблемы, я использовал решения LaunchImage. После этого все еще я столкнулся с той же проблемой. Я пробовал все вышеперечисленные решения. В конце я обнаружил, что мои png-изображения не включают разрешения ALPHA. После добавления новых изображений я могу видеть полноэкранные изображения.
В моем случае у меня есть один актив с изображениями запуска, но он также показывал верхнюю и нижнюю темную полосу.
Я пробовал решение раскадровки запуска, и да, это работает, но я не сделал хочу добавить новый файл, поэтому я решил это исправить:
Вот и все!
LaunchScreen.storyboard
сделало трюк. – Mojtaba 17 September 2015 в 23:10