Второй ответ выше - самый простой.
int n = Integer.parseInt (System.console (). readLine ());
Вопрос: «Как читать со стандартного ввода».
Консоль - это устройство, обычно связанное с клавиатурой и дисплеем, с которого запускается программа. [ ! d5]
Возможно, вы захотите проверить, нет ли консольного устройства Java, например Java VM не запускается из командной строки или перенаправляются стандартные входные и выходные потоки.
Консоль cons; if ((cons = System.console ()) == null) {System.err.println («Не удается получить консоль»); ...}
Использование консоли - простой способ ввода чисел. В сочетании с parseInt () / Double () и т. Д.
s = cons.readLine («Введите int:»); int i = Integer.parseInt (s); s = cons.readLine («Ввести двойной:»); double d = Double.parseDouble (s);
Вы должны использовать методы - (void)didReceiveMemoryWarning
и - (void)dealloc
.
В iOS 6 методы viewWillUnload и viewDidUnload для UIViewController теперь устарели. Если вы использовали эти методы для выпуска данных, вместо этого используйте метод didReceiveMemoryWarning. Вы также можете использовать этот метод для публикации ссылок на представление контроллера представления, если он не используется. Вам нужно будет проверить, что представление не находится в окне, прежде чем делать это.
blockquote>Итак, вы должны проверить, находится ли ваше представление в окне первым, а затем удалить своего наблюдателя в
didReceiveMemoryWarning
Ответ Алекс хороший. Но мне нравится правильное спаривание. По этой причине, если представление не нужно уведомлять, когда его даже не видно, я обычно добавляю уведомление в viewWillAppear и viewDidDisappear
Почему бы просто не удалить наблюдателя в функции DEALLOC? И если вы используете ARC, не вызывайте [super dealloc]
. Если вы просматриваете функцию контроллера dealloc, вызов не вызывается, тогда вам нужно выяснить, почему это происходит. Возможно, у вас есть NSTimer, запущенный на ViewController, и когда вы открываете представление, это приведет к тому, что dealloc не будет вызван. Или вид сохраняется еще где.
viewDidLoad
(который можно вызвать несколько раз) и удалите его в dealloc, вы можете быть зарегистрированы несколько раз для уведомления. Вы должны использовать viewDidAppear
и viewDidDisappear
для запуска / остановки прослушивания.
– deanWombourne
7 November 2012 в 14:38
Прежде всего, даже если viewDidUnload
не устарел, вам, должно быть, пришлось отменить это уведомление в viewDidUnload
AND dealloc
. Даже до iOS 6, viewDidUnload
НЕ вызывается в большинстве случаев; только в ситуациях с низкой памятью. Поэтому, если бы вы только помещали его в viewDidUnload
, а не dealloc
раньше, он не был бы незарегистрирован, и, вероятно, он был бы разбит, когда он был освобожден и получил уведомление. Поэтому вам, должно быть, пришлось поместить его в dealloc
, чтобы он работал правильно.
Во-вторых, если вы делали это правильно раньше, вам не нужно делать что-либо дополнительное для его работы правильно в iOS 6. Единственное отличие в iOS 6 состоит в том, что представления больше не выгружаются вообще (даже в ситуациях с низкой памятью). Таким образом, это то же самое, что и в iOS 5, когда вы не столкнулись с ситуацией с низкой памятью. Поскольку представления не выгружаются, viewDidLoad
вызывается только один раз, поэтому ваше уведомление будет регистрироваться только один раз. Он будет незарегистрирован в dealloc
, поскольку вы должны положить его для того, чтобы он работал правильно.
viewDidUnload
был явно указан в документации, вызванной только в том случае, если ваше представление выгружено из-за предупреждения о памяти. Если вы добавите наблюдателя вviewDidLoad
и удалите его только вviewDidUnload
, то много времени вы будете освобождены без его удаления. Это приведет к тому, что в центре уведомлений появится висячий указатель, ведущий почти наверняка к сбою позже. – Tommy 31 October 2012 в 02:12view.window
. – Groxx 22 November 2012 в 02:47if ([self isViewLoaded] && self.view.window)
– Mike Weller 15 April 2013 в 16:46