Форум программистов, компьютерный форум, киберфорум
Наши страницы

Objective-C

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
verylazy
Заблокирован
#1

EXC_? (11) (code=0, subcode=0x0) - Objective-C

26.02.2013, 13:54. Просмотров 1211. Ответов 12
Метки нет (Все метки)

Всем привет.
Я всего пару месяцев изучаю Objective-C. Написал свое приложение, все было замечательно пока приложение не начало вываливаться при определенных обстоятельствах с сообщением в сабже.
Пишу на вирутальной машине, xCode 4.4.1

Я засел за буржуйские форумы и блоги.
Практически всегда при обсуждении этой ошибки люди упоминали memory leak и problem with many autoreleased objects, как то так.

Сначала я подумал что ARC плохо справляется со своими обязанностями, потом проводил эксперименты с @autoreleasepool {}
Комментировал различные куски кода и даже вызовы методов, что бы понять что вызывает эту ситуацию.

В общем, опуская все мои трехнедельные поиски и нервы я пришел вот к чему - если сделать тупо новый проект и либо в main.m либо в методе viewDidLoad вписать строки:
Objective-C
1
2
3
do {
// тут вообще можно ничего не писать
 } while (YES)
и запустить проект на выполнение то через несколько минут (5-7 как правило) все останавливается.

WTF ? Пустой бесконечный цикл рушит все к чертовой бабке?
Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2013, 13:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос EXC_? (11) (code=0, subcode=0x0) (Objective-C):

Ошибка The thread 0x390 has exited with code 0 (0x0). The program 'D:AlexVVCPr1DebugPr1.exe' has exited with code 0 (0x0). - C++
Loaded 'D:WINNTSystem32 tdll.dll', no matching symbolic information found. Loaded 'D:WINNTsystem32kernel32.dll', no matching symbolic...

завершилась с кодом 0 (0x0) - C++
Здравствуйте. Я столкнулся с проблемой. Не запускается проект. Да вроде все правильно написал но в чем то проблема..... Можете подсказать...

Поток не работает (завершение 0x0) - C++
HANDLE hThread = NULL; // DlgProc() hThread = CreateThread(NULL, 0, downloadThread, NULL, 0, NULL); ...

Программа завершилась машинным кодом (0x0) - C++
#include "stdafx.h" # include <iostream> # include <iomanip> # include <math.h> using namespace std; double xx0, xx1; //...

Машинный код" завершилась с кодом 0 (0x0) - C++

При чтении по адресу приложение падает с кодом 0x0 - C++
При попытке считать разрешение экрана по адресу который я ввожу, консоль просто падает. При этом, адрес верный - через чит энжин я...

12
zulkis
683 / 610 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
26.02.2013, 17:16 #2
Несколько минут???
А не 10 ли секунд?
Если вы загрузите главный поток таким бесконечным циклом, через 10 секунд ваше "зависшее" приложение грохнет операционка.

Добавлено через 6 минут
P.S. Проверил - не грохнулось... интересно...

Добавлено через 3 минуты
P.P.S Но дело то банально в другом - зачем Вам нужен бесконечный цикл в главном потоке? Даже ради эксперимента?
0
verylazy
Заблокирован
26.02.2013, 17:49  [ТС] #3
Все начиналось не с бесконечного цикла.
В моей программе в цикле do while вызывались два метода по очереди пока не выполнится условие.
Все работало отлично. Я для своих нужд ставил расчеты на несколько часов что бы проверить не упадет ли приложение из-за утечек памяти или из-за чего то.
Потом я занялся наполнением viewDidLoad, то есть добавил туда три UIButton и десяток настроек для кнопок типа цвета и т.д.
И вот вчера снова запустил расчет и началось. Я начал откатывать по очереди изменения, которые делал - не помогло.
Ну а все остальное я уже описал.

Я понимаю что это фаза луны или феншуй и похоже на троллинг, но я не могу теперь спать - хочу понять что такое изменилось.
0
zulkis
683 / 610 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
26.02.2013, 17:59 #4
НЕЛЬЗЯ в главном потоке делать do while(true). Да еще тем более во viewDidLoad. Нет, вообще нельзя. Больших и тяжелый операций вообще в главном потоке быть не должно.

Какой расчет запустили?

Вы поймите, если нужно что-то считать - выделяйте отдельный поток - и считайте что угодно, не загружайте главный поток. Он - для UI.

Это когда люди начинают математикой заниматься в main thread - вот это троллинг, имхо.
1
verylazy
Заблокирован
26.02.2013, 18:07  [ТС] #5
Objective-C
1
2
3
4
5
6
7
8
9
10
11
int main(int argc, char *argv[])
{
    @autoreleasepool {
        int i;
        do {
            i = arc4random();
        } while (YES);
        
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}
Через несколько минут получаю вот это www.youpic.ru/images/2013/02/26/8785118321.png

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

Добавлено через 7 минут
Z код привел. но забыл уточнить - проект новый, шаблон Empty Application.
Нету больше никаких viewDidLoad.
0
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
26.02.2013, 18:07 #6
На симуляторе или на устройстве?
0
zulkis
683 / 610 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
26.02.2013, 18:20 #7
mobidevelop, какая разница где в данном случае.

verylazy, почитайте iOS Application Life Cycle
Кто может гарантировать корректное выполнение Вашей программы, если она у Вас даже не запустилась корректно.
Я могу только предположить, что система попыталась убить приложение(и правильно между прочим), а в этот момент у Вас работал этот безалаберный цикл. Собственно чтото и произошло.

Добавлено через 2 минуты
Цитата Сообщение от verylazy Посмотреть сообщение
UI должен отобразить результат который получался после вызова моих методов, поэтому выделять его в отдельный поток мне не хочется, да и не умею пока что.
Каких методов? Покажите.
Где конкретно происходил вызов этих методов - тоже покажите.
Не умеете - учитесь. Иначе все так и будет падать.
0
verylazy
Заблокирован
26.02.2013, 18:34  [ТС] #8
На симуляторе.
Ссылку я прочту, но что-то мне подсказывает что дело не в бесконечном цикле и уже тем более там никто никого не прибивает.

Может быть тут есть кто-то, кто работает под Mountain Lion в xCode 4.4.1 что бы проверить? Минут на 10 делов

Добавлено через 6 минут
zulkis, если мой безалаберный цикл прибивает система, то почему этот же цикл, но запущенный на более старой версии xCode под Snow Leopard никто не прибивает даже за несколько часов?

Не умеете - учитесь. Иначе все так и будет падать.
Перестаньте копетанить, я это и без вас знаю
0
zulkis
683 / 610 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
26.02.2013, 18:37 #9
То есть Вы считаете нормальным - "приложение зависло и телефон тупо показывает черный экран, помогите" - так вот для таких случаев как раз таки iOS и убивает приложения, которые интенсивно(читай долго и непрерывно) используют главный поток. А в вашем случае(в примере) - приложение даже не запустилось.

И когда "что-то подсказывает" - лучше открыть документацию и почитать. Я не первый год программирую под эту платформу и точно могу сказать одно - в документации Вы найдете очень много того, о чем Вам "что-то" не подскажет.

И если честно, у меня как-то даже в мыслях не возникало в main писать бесконечный цикл... Это же бессмысленно.
Стоп - так iOS или MAC OS?
0
verylazy
Заблокирован
26.02.2013, 18:42  [ТС] #10
iOS Да у меня тоже такой мысли не было, но вот как-то докатился.
Документацию я читаю, просто ее очень много, а моего мозга мало. Это мой первый язык программирования, мое хобби, я то админ-цисковод вообще.
0
zulkis
683 / 610 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
26.02.2013, 18:52 #11
Уберите это оттуда, расскажите что Вам нужно, покажите свои "наработки" - и Вам помогут.
Я помогу, еще кто нибудь поможет. Но такого делать не нужно

Покажите код, который падал раньше, до Ваших извращений в main. Который, с ваших слов, корректно работал в Snow Leopard(хехе, почему сноу леопард... когда запускается это все в другой оси, мне не ясно, но все же), затем будем плясать от того, что падало в самом начале.
0
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
26.02.2013, 19:01 #12
Цитата Сообщение от verylazy Посмотреть сообщение
UI должен отобразить результат который получался после вызова моих методов, поэтому выделять его в отдельный поток мне не хочется, да и не умею пока что.
Выносить по-любому придется. Если приложение залипает на несколько секунд, то "такой хоккей нам не нужен". UI должен отзываться мнгновенно. Для этого вот что есть. Разжевывать намеренно не буду. Если вопросы останутся - спросите дополнительно.
А на счет бесконечного цикла, скорее всего стек кончается. Для чистоты эксперимента напишите в нем что-нибудь совсем примитивное, что 100% не ест ресурсов. Например, ++i. Только именно префиксный инкримент. Постфиксный может стек сжирать (от оптимизации зависит). Если продержится не дольше, то Zulkis прав и это система приложение губит. Но это вопрос чисто теоретический. Просто интересно что происходит. Все равно так делать ни в коем случае нельзя.
1
verylazy
Заблокирован
27.02.2013, 01:12  [ТС] #13
Ребят, спасибо всем, кто откликнулся!
Меня че-то так эта тема торкнула с этим вылетом, что я впервые за несколько лет внимательно, не по диагонали, а строка за строкой начал читать документ. Вот сейчас дошел до строк
Кликните здесь для просмотра всего текста
About the main Function

Like any C-based app, the main entry point for an iOS app at launch time is the main function. In an iOS app, the main function is used only minimally. Its main job is to hand control to the UIKit framework. Therefore, any new project you create in Xcode comes with a default main function like the one shown in Listing 3-1. With few exceptions, you should never change the implementation of this function.

Больше не буду так делать, честное пионерское. Последний раз запустил тест с инкрементом, как посоветовал
mobidevelop. Результат тот же, ну к этому времени я уже понял примерно куда двигаться.
За ссылку спасибо большое, как раз то, что нужно мне, буду разбираться!
0
27.02.2013, 01:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.02.2013, 01:12
Привет! Вот еще темы с ответами:

Не могу понять в чем дело. Машинный код" завершилась с кодом 0 (0x0) - C++
#include < iostream > using namespace std; struct coord { int x, y; }; bool isValidCoord(int x) { return x>=1 && x<=8; ...

IIS, ASP and SSI [code<!--#echo var='DATE_LOCAL'-->[/code] - C# ASP.NET
&lt;!--#include file='text.txt'--&gt; &lt;!--#include file='conn.asp'--&gt; Всё это работает под IIS ... а вот это не работает :(( IIS...

Неуправляемый код (unmanaged code) в управляемом коде (managed code) - C#
Товарищи! Прошу Вашей профессиональной помощи. 1. Что происходит в блоке выделенным красным шрифтом (после static class NativeMethods),...

коды (например [code]&#000;[/code]) русских символов - Web
В литовском языке буквы можна закодировать в виде ę - ę и они будук корректно отображаться при любой кодировке страницы. Какие коды...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.