我在这里遇到问题:我的应用程序在我的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配置为 “主机= I386-苹果达尔文 --target = arm-apple-darwin“.tty / dev / ttys002将程序加载到 debugger ...程序已加载。目标 远程移动 /tmp/.XcodeGDBRemote-17280-65 切换到remote-macosx协议 mem 0x1000 0x3fffffff cache mem 0x40000000 0xffffffff无记忆 0x00000000 0x0fff无运行正在运行... 启动远程程序时出错:失败 获取进程456的任务。错误 启动远程程序:失败了 得到过程456的任务 正在调试的程序不存在 跑。正在调试的程序不是 正在运行。
[会议于2010-12-23开始 20:33:33 +0100。] GNU gdb 6.3.50-20050815(Apple版gdb-1472)(8月5日星期五05:54:10 UTC 2010)版权所有2004自由软件 Foundation,Inc。GDB是免费软件, 由GNU General Public提供 许可证,欢迎您进行更改 它和/或分发它的副本 在一定条件下。输入“显示 复制“看看条件。那里 GDB完全没有保修。 输入“show warranty”了解详情。这个 GDB配置为 “主机= I386-苹果达尔文 --target = arm-apple-darwin“.tty / dev / ttys004将程序加载到 debugger ...程序已加载。目标 远程移动 /tmp/.XcodeGDBRemote-17280-72 切换到remote-macosx协议 mem 0x1000 0x3fffffff cache mem 0x40000000 0xffffffff无记忆 0x00000000 0x0fff无运行正在运行... 启动远程程序时出错:失败 获取进程508的任务。错误 启动远程程序:失败了 得到过程508的任务 正在调试的程序不存在 跑。正在调试的程序不是 正在运行。
以下是调用网址的代码
NSURL * storeURL = [NSURL fileURLWithPath:[[self applicationDocumentsDirectory] stringByAppendingPathComponent:@“TheLearningMachine.sqlite”]];
我希望你能更好地阅读。
答案 0 :(得分:1)
代码中的某些内容是在设备上使用错误的网址调用[NSURL fileURLWithPath:]
。此URL可能很糟糕,因为您在设备上引用了硬编码路径。
检查你是如何构建URL的 - 模拟器更容忍这里的问题。
您是否尝试调用mailto:或callto:?
它也可能是一个不同问题的副作用,例如this Japanese post在没有先调用alloc的情况下调用init - 似乎与你有相同的callstack。
答案 1 :(得分:1)
好的,谢谢你们的支持和建议,Graham Parks是对的。我很难过,因为我无法使用Iphone调试器。 (也许是因为它越狱了)。它仍然没有工作顺便但至少,我的应用程序现在。
我不知道你们第一次看到你的第一个应用程序出现在你的Iphone屏幕上时是否能记得...... Waouh,我几乎哭了,因为我刚刚向Apple支付了79欧元发现我的应用程序不会安装在JB Iphone上。
这是我的圣诞礼物。
关于这里的错误,问题是我在定义网址时犯了一个错误。
NSString * modelPath = [[NSBundle mainBundle] pathForResource:@“TheLearningMachine”ofType:@“momd”];
问题是“妈妈”,(妈妈好多了)而且我的Iphone也更合作; - )
非常感谢大家的帮助....顺便说一句圣诞快乐!
迈克迈克答案 2 :(得分:0)
检查您的控制台。一个未被捕获的例外被抛出;该异常的详细信息将在Xcode的控制台中打印出来。
答案 3 :(得分:0)
根据您的代码,这一行是问题所在:
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);
上面的一行在输出到控制台时应该产生一个零或至少某种奇怪的值。
答案 4 :(得分:0)
您应用的启动代码中某处正在调用[NSURL fileURLWithPath:]
,并且它会引发异常。您需要检查传递给它的字符串,可能需要NSLog()
调用。
(我的猜测是传递给它的值是nil
,因为无论什么代码生成该路径都会由于某种原因而失败。如果没有看到实际的代码,很难说)
答案 5 :(得分:0)
原谅我,但我找不到任何 - (NSString *)applicationDocumentsDirectory方法或在iOS中定义的属性。你自己定义这个,还是我是一个门把手?
答案 6 :(得分:0)
我自己也碰到了这个,我发现有用的是点击左侧窗格中的文件在文件检查器中打开它,然后确保你的“目标成员资格”(位于右侧) Xcode窗格)检查您的主项目。如果不这样做,你的文件路径将不正确,你将会崩溃。