- 1
- 2
- 3
- (void) closeApp {
int closer = 1 / 0;
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−1050
- (void) closeApp {
int closer = 1 / 0;
}
Закрываем программу легкой арифметикой.
Найдено в рабочем проекте.
А чем можно элегантно остановить программу, кроме стандартной функции die()?
Да, я уже как-то пробовал поднять эту тему > А чем можно элегантно остановить программу, кроме стандартной функции die()
стандартной функцией exit() :)
И это далеко не самое страшное. Такова идеология PHP - если что-то ломается, лучше промолчать и продолжить работу в поломанном состоянии - 30 секунд позора максимум и программа остановится.
>А чем можно элегантно остановить программу
Разрубить катаной сервер на две половинки, как в голливудских фильмах. Чтобы еще не сразу распался на части, а постепенно разъехался.
А в чем проблема? 1/0 есть inf.
http://ideone.com/yzlDDY
Чего это программа должна останавливаться? Максимум исключение при соответсвующих настройках, если разрешили.
Это ты про какие языки, бро?
int то конечно своё возьмет
Спойлер я сразу не приметил.
http://ideone.com/cE4Cgd
http://ideone.com/VhXO5d
Тоже такую хочу, но идеи для слогана пока не придумал.
Осталось дело за малым: добавить случайности в ключевое слово и автопостинг в граватар.
http://linux.jpg.to/
(Not Worksafe!)
Для начала - процессоры со своим int 0.
А в ARM походу вообще нет инструкции для целочисленного деления, её нужно эмулировать программно.
Gist: https://gist.github.com/4152028
raise не нужен
Статическую картинку рабочего стола.
Яббл придерживается того мнение, что приложение должен закрыть пользователь.
А он может? Или максимум, что он может - переключиться на десктоп или другую прогу?
P.S. На ведроиде же тоже такая идеология, при которой закрытие проги считается неприличным.
Можно указать флажок, чтобы метод вызывался даже если тело спит (тело уходит в спячку сразу после выхода из него, но если надо что-то длинное, то через PowerManager можно договориться, чтобы не засыпал).
Программы в бекграунде висят до тех пор, пока есть свободная память, потом выгружаются в порядке отожранной памяти, и в менюшке остаются только иконки. Поэтому имеет смысл писать оптимизированные в плане памяти приложения, и выгружать не нужный кеш при уходе в бекграунд, что бы программа не убивалась системой.
Я придумал офигенную технологию. Сначала при запуске все установленные приложения запущены, но неиспользуемые вытеснены в медленную память. "Открытие" приложения подгружает его обратно в ОЗУ. Закрытия нет. Когда программа хочет закрыться (по требованию ОС, пользователя или внутреннему событию), она просто суспендится. Но не закрывается никогда. Фу! Нельзя закрываться!
Срочно бегу патентовать.
Это точно не болдженос
оно должно висеть либо пока его не убьет иос или пользователь, либо ты можешь сам его закрть, но тогда ты мудак
Потому и не хотят брать. С виду бесплатно и никому не впёрлось, а начнешь кодить - плати.
Лежит жаба - нельзя юзать.
Все три иосовских уборщика - детерминированные шаред поинтеры? Это отвратительно, как же делать граф из объектов чтобы он не тёк?
Впрочем, да, архитектура тут похожая, отдельно заводишь список ВСЕХ вершин графа, чтобы стопудов ни одна падла не повисла в кольце, а потом перед удалением обходишь граф, помечая вершины и зануляя ссылки на помеченные, да только вот при классической рахитектуре этого делать не обязательно, если только граф не колбасится непрерывно всю жизнь приложения, а это означает, что сложность написания кода тем самым увеличилась.
Слабые ссылки? Думаю си-указатель * в Objective C сойдет за слабую.
Все объекты фреймворка являются потомками класса NSObject, который содержит в себе счётчик ссылок. Изменяется в коде он явно - вызовами init, copy, retain, release, autorelease (объект помещается в специальный список, который когда-нибудь вызовет ему release). ARC занимается, по сути, тем, что втыкает вызовы retain/autorelease согласно соглашениям, принятым в языке.
Увеличивать или уменьшать счётчик ссылок надо вручную.
Для сишных структур счётчиков ссылок нет - всё как в Си, секс по полной.
Eщё в Obj-C такой хитрый тип, как id, но по сути он void*, только набор вернингов для него отличается (например, если вы попробуете отправить сообщение объекту с типом id - всё будет нормально, ибо так и задуманно, а если void* - получите warning на этапе компиляции).
Си указатель сойдет за опасную ссылку, а не за слабую. Слабая ссылка должна превращаться в null при смерти объекта.
Суть? Где почитать? Это круто?
SUS
хорошая, годная опечатка
Вот, для деления на ноль тоже есть.
заставляют проходить тест джобса тьюринга?
просто в IDE висит ворнинг:
"division by zero is undefined"
Мораль: видишь UB - никогда не юзай его, и даже не пытайся проверять работает он или нет на твоей системе, спокойней будешь спать, т.к. ты никогда не узнаешь, какое поведение будет на другой железке или в новой версии компилятора\оси. Хотя нет, узнаешь, от недовольных юзеров тех самых других железок..
В тебе нет духа эксперементатора!
UBox
UBox 24/365.
а лишние операции для срабатывания - так это уже не элегантно