Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:
null
. null
. null
, как если бы это был массив. null
, как если бы это был массив. null
как будто это было значение Throwable. Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null
.
Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html
Если Вы используете контроллер навигации и устанавливаете его делегата, то представление {Сделал} {Появляются, Исчезнет}, методы не вызываются.
необходимо использовать методы делегата контроллера навигации вместо этого:
navigationController:willShowViewController:animated:
navigationController:didShowViewController:animated:
Я не на 100% уверен в этом, но я думаю, что добавление представления к иерархии представления непосредственно означает звонить -addSubview:
на представлении контроллера представления (например, [viewController.view addSubview:anotherViewController.view]
) вместо того, чтобы продвинуть новый контроллер представления на стопку контроллера навигации.
Я использовал контроллер навигации. Когда я хочу или убывать к другому уровню данных, или показать мое пользовательское представление я использую следующее:
[self.navigationController pushViewController:<view> animated:<BOOL>];
, Когда я делаю это, я действительно заставляю эти viewWillAppear
функция стрелять. Я предполагаю, что это квалифицирует как "косвенное", потому что я не называю фактическое addSubView
метод сам. Я не знаю, на ли это 100% применимо к Вашему приложению, так как я не могу сказать, используете ли Вы контроллер навигации, но возможно оно даст представление.
Я столкнулся с этой той же проблемой. Просто отправьте viewWillAppear
сообщение к Вашему контроллеру представления перед добавлением его как подпредставления. (Существует один параметр BOOL, который говорит контроллер представления, если это анимируется для появления или нет.)
[myViewController viewWillAppear:NO];
Взгляд на RootViewController.m в примере Метронома.
(я на самом деле нашел проекты Apple в качестве примера замечательными. Существует НАМНОГО больше, чем HelloWorld;)
iOS 13 битов мое приложение в торце здесь. Если Вы заметили, что изменение поведения с iOS 13 просто установило следующее перед продвижением его:
yourVC.modalPresentationStyle = UIModalPresentationFullScreen;
Вы, возможно, также должны установить его в своем .storyboard в инспекторе Атрибутов (Презентация набора на Полный экран).
Это заставит Ваше приложение вести себя, как оно сделало в предыдущих версиях iOS.
Я думаю, что добавление подпредставления не обязательно означает, что представление появится, поэтому нет автоматического вызова метода класса, который он будет
unsafe
{
char c = 'c';
char *ch = &c;
}
Ваш пример имеет Последовательности
и ошибку компиляции от использования одной из Последовательности перегрузок конструктора, так что я думаю, что вам действительно нужен массив символов, он же Последовательностью
и, может быть, не char *
.
В этом случае:
char c = 'c';
string s = c.ToString(); // or...
string s1 = "" +c;
Также доступно:
unsafe
{
char c = 'c';
char* ch = &c;
string s1 = new string(ch);
string s2 = new string(c, 0);
}
-121--4534683- Как насчет:
var test = 'c'.ToString()
-121--4534692- У меня была та же проблема. В моем приложении у меня есть 2 навигационных контроллера и толкание одного и того же контроллера вида в каждом из них работали в одном случае, а не в другом. Я имею в виду, что при нажатии точно такого же контроллера вида в первом UINavigationController
вызывался viewWillAppean
, но не при нажатии во втором навигационном контроллере.
Затем я наткнулся на этот пост UINavigationController должен вызвать методы viewWillAppean/viewWillDispear
И понял, что мой второй навигационный контроллер действительно переопределил viewWillAppean
. Проверка кода показала, что я не звонил
[super viewWillAppear:animated];
Я добавил его и это сработало!
В документации говорится:
Если переопределить этот метод, необходимо вызвать super в какой-то момент реализации.
Я думаю, что они имеют в виду "напрямую", подключая все так же, как это делает шаблон xcode "Navigation Application", который устанавливает UINavigationController как единственное вложенное представление UIWindow приложения.
Использование этого шаблона - единственный способ заставить методы Will/Did/Appear/Disappear вызываться на объектных ViewControllers при нажатии/открытии этих контроллеров в UINavigationController. Ни одно из других решений в ответах здесь не помогло мне, включая реализацию их в RootController и передачу их в (дочерний) NavigationController. Эти функции (will/did/appear/disappear) вызывались в моем RootController только при показе/скрытии VC верхнего уровня, моих "login" и navigationVC, а не подVC в навигационном контроллере, поэтому у меня не было возможности "передать их через" Nav VC.
В итоге я использовал функцию делегата UINavigationController для поиска конкретных переходов, которые требовали последующей функциональности в моем приложении, и это работает, но требует немного больше работы для того, чтобы "смоделировать" функциональность исчезновения и появления.
Также принципиально важно заставить его работать после того, как я бился головой об эту проблему в течение нескольких часов сегодня. Любые рабочие фрагменты кода с использованием пользовательского RootController и дочернего навигационного VC были бы очень признательны.