Мое приложение вылетает при запуске на моем Iphone - PullRequest
0 голосов
/ 23 декабря 2010

У меня проблема здесь: мое приложение зависло на моем Iphone (JB), хотя Xcode ни на что не жалуется.Хотя приложение отлично работает на симуляторе.

Тем не менее, в журналах устройств есть следующее:

Thread 0 Crashed:
0   libSystem.B.dylib              0x00078ac8 __kill + 8
1   libSystem.B.dylib              0x00078ab8 kill + 4
2   libSystem.B.dylib              0x00078aaa raise + 10
3   libSystem.B.dylib              0x0008d03a abort + 50
4   libstdc++.6.dylib              0x00044a20 __gnu_cxx::__verbose_terminate_handler() + 376
5   libobjc.A.dylib                0x00005958 _objc_terminate + 104
6   libstdc++.6.dylib              0x00042df2 __cxxabiv1::__terminate(void (*)()) + 46
7   libstdc++.6.dylib              0x00042e46 std::terminate() + 10
8   libstdc++.6.dylib              0x00042f16 __cxa_throw + 78
9   libobjc.A.dylib                0x00004838 objc_exception_throw + 64
10  CoreFoundation                 0x0009fd0e +[NSException raise:format:arguments:] + 62
11  CoreFoundation                 0x0009fd48 +[NSException raise:format:] + 28
12  Foundation                     0x000125d8 -[NSURL(NSURL) initFileURLWithPath:] + 64
13  Foundation                     0x000371e0 +[NSURL(NSURL) fileURLWithPath:] + 24

Есть идеи, в чем может быть проблема?Я уже потратил на это целый день, но ... я застрял.

Заранее спасибо ...

Мики Майк

Хорошо, вотзатем из консоли я получаю следующее:

Этот GDB был настроен как "--host = i386-apple-darwin --target = arm-apple-darwin" .tty / dev / ttys002Загрузка программы в отладчик ... Программа загружена.target remote-mobile /tmp/.XcodeGDBRemote-17280-65 Переключение на протокол удаленного macosx mem 0x1000 0x3fffffff cache mem 0x40000000 0xffffffff none mem 0x00000000 0x0fff none run Работает… Ошибка запуска удаленной программы: не удалось получить задачу для процесса 456. Ошибка запускаудаленная программа: не удалось получить задачу для процесса 456. Отлаживаемая программа не запускается.Отлаживаемая программа не запускается.

[Сессия началась в 2010-12-23 20:33:33 +0100.] GNU gdb 6.3.50-20050815 (версия Apple gdb-1472) (четверг, август5 05:54:10 UTC 2010) Copyright 2004 Free Software Foundation, Inc. GDB - это бесплатное программное обеспечение, на которое распространяется стандартная общественная лицензия GNU, и вы можете изменять его и / или распространять его копии при определенных условиях.Введите «показать копирование», чтобы увидеть условия.На GDB нет абсолютно никаких гарантий.Тип "показать гарантию" для деталей.Эта GDB была сконфигурирована как «--host = i386-apple-darwin --target = arm-apple-darwin» .tty / dev / ttys004 Загрузка программы в отладчик… Программа загружена.target remote-mobile /tmp/.XcodeGDBRemote-17280-72 Переключение на протокол удаленного macosx mem 0x1000 0x3fffffff cache mem 0x40000000 0xffffffff none mem 0x00000000 0x0fff none run Работает… Ошибка запуска удаленной программы: не удалось получить задачу для процесса 508. Ошибка запускаудаленная программа: не удалось получить задачу для процесса 508. Отлаживаемая программа не запускается.Отлаживаемая программа не запускается.

Вот код, вызывающий URL

NSURL * storeURL = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @ "TheLearningMachine.sqlite "]];

Надеюсь, вам будет удобнее читать.

Ответы [ 7 ]

1 голос
/ 24 декабря 2010

Хорошо, ребята, спасибо за вашу поддержку и предложения, Грэм Паркс был прав. Мне было тяжело, потому что у меня не было возможности использовать отладчик с Iphone. (Может быть, потому что он взломан). Кстати, он все еще не работает, но, по крайней мере, мое приложение сейчас.

Я не знаю, можете ли вы, ребята, вспомнить, когда вы впервые увидели свое первое приложение, появляющееся на экране вашего Iphone ... Вау, я чуть не заплакал, тем более, что я только что заплатил 79 евро Apple найти мое приложение не будет установлено на JB Iphone.

Наверное, это мой рождественский подарок.

Что касается этой ошибки, дело в том, что я ошибся при определении своего URL.

NSString * modelPath = [[NSBundle mainBundle] pathForResource: @ "TheLearningMachine" ofType: @ "momd"];

Проблема была в том, что "мама" (мама намного лучше), и она намного лучше сотрудничает с моим Iphone; -)

Так что спасибо всем вам за помощь .... И, кстати, счастливого Рождества!

Мики Майк

1 голос
/ 23 декабря 2010

Что-то в вашем коде вызывает [NSURL fileURLWithPath:] с неверным URL на устройстве.Этот URL, скорее всего, плох, потому что вы ссылаетесь на жестко заданный путь на устройстве.

Проверьте, как вы создаете URL - симулятор здесь более терпим к проблемам.

Вы пытаетесь вызвать что-то вроде mailto: или callto:?

Это также может быть побочным эффектом другой проблемы, такой как этот японский пост , который вызывает init без вызова alloc сначала - кажется, имеет тот же стек вызовов, что и вы.*

0 голосов
/ 02 апреля 2015

Я сам наткнулся на это, и я обнаружил, что сработало, щелкнув файл в левой панели, чтобы открыть его в инспекторе файлов, а затем убедитесь, что у вас есть «Целевое членство» (находится справа отпанель Xcode) проверила ваш основной проект.Без этого ваш путь к файлу не будет правильным, и вы получите сбой.

0 голосов
/ 24 декабря 2010

Простите, но я не могу найти ни одного - (NSString *) метода или свойства applicationDocumentsDirectory, определенных в iOS. Вы сами это определяете или я дверная ручка?

0 голосов
/ 23 декабря 2010

Где-то в коде запуска вашего приложения вы звоните на [NSURL fileURLWithPath:], и это вызывает исключение. Вам нужно проверить, какая строка передается ей, возможно, с помощью вызова NSLog().

(мое дикое предположение, что передаваемое ему значение равно nil, потому что любой код, генерирующий этот путь, по какой-то причине терпит неудачу. Трудно сказать, не видя фактический код)

0 голосов
/ 23 декабря 2010

Исходя из вашего кода, эта строка является проблемой:

NSURL *storeURL = [NSURL fileURLWithPath: [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"TheLearningMachine.sqlite"]];

Попробуйте заменить его следующим:

NSString *appDirectory = [self applicationDocumentsDirectory];
NSLog(@"appDirectory: %@",appDirectory);
NSString *finalPath = [appDirectory stringByAppendingPathComponent: @"TheLearningMachine.sqlite"];
NSLog(@"finalPath: %@",appDirectory);
NSURL *storeURL = [NSURL fileURLWithPath: finalPath];
NSLog(@"storeURL: %@",storeURL);

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

0 голосов
/ 23 декабря 2010

Проверьте вашу консоль.Неисследованное исключение было брошено;детали этого исключения будут напечатаны в консоли Xcode.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...