将应用程序部署到设备时,程序将在几个周期后退出并出现以下错误:
Program received signal: "EXC_BAD_ACCESS".
Run Code Online (Sandbox Code Playgroud)
该程序在iPhone模拟器上运行没有任何问题,只要我逐步执行一个指令,它也将调试和运行.一旦我让它再次运行,我就会EXC_BAD_ACCESS发出信号.
在这种特殊情况下,它恰好是加速度计代码中的错误.它不会在模拟器中执行,这就是它没有抛出任何错误的原因.但是,它会在部署到设备后执行.
这个问题的大部分答案都是针对一般EXC_BAD_ACCESS错误的,所以我会把这个问题保留为可怕的Bad Access错误.
EXC_BAD_ACCESS通常由于非法内存访问而被抛出.您可以在下面的答案中找到更多信息.
你EXC_BAD_ACCESS以前遇到过这个信号吗,你是怎么处理它的?
我正在尝试将我现有的iPhone应用程序项目升级到通用应用程序,但我在Xcode 4中找不到任何选项来执行此操作.它在哪里?
Java开发人员的日常调试情况是抛出异常,然后您需要深入研究调试器以找出抛出的内容.通常,您会尝试在抛出异常之前设置一些断点,并希望您能够确定导致该异常的情况.
在Eclipse中,断点可以定义一个表达式,只有当变量x等于值y时才会触发断点.我的问题是,是否可以定义某种全局表达式,一旦抛出异常,它就被调试器捕获,允许程序员立即检查所有变量?理想情况下,您还没有遇到catch块,Eclipse将捕获引发的异常并停止执行而不更改堆栈内容.
这是可能的还是受JVM的限制?
我们的应用程序必须使用最少的远程http请求显示大量数据,因此我们在后端添加了一个端点,它将所有必要的数据作为单个json响应提供.这导致~1.5MB(压缩)或大约8 MB的未压缩的json格式文本.
没有太大问题,它会在10到30秒内下载,我们正在使用ASIHTTPRequest将整个响应写入磁盘.
现在是有趣的部分 - 在将未压缩文件读入内存映射字符串后,我们使用stig的json-framework将其转换为NSDictionary.这对我们的应用程序的其余部分以及其他API端点的典型2 KB json响应非常有效.但是,将这8 MB数据反序列化需要几秒钟(模拟器)到几分钟(3G和第二代iPod Touch).
我正在研究读取所有这些数据的最佳方法.
我很乐意使用直接从后端提供的二进制plist,但是我们使用Java并且我没有找到符合我们要求的合适库,并且在如此紧迫的期限内,编写我们自己可能不是最好的主意.
如果它以任何方式有帮助,我们正在解析的json字符串主要是X项的数组,如下所示:
{
"items": [ { "key1": "value1", "key2": "value2" },
{ "key1": "value1", "key2": "value2" },
{ "key1": "value1", "key2": "value2" },
{ "key1": "value1", "key2": "value2" },
{ "key1": "value1", "key2": "value2" },
{ "key1": "value1", "key2": "value2" }
]
}
Run Code Online (Sandbox Code Playgroud)
将这个8 MB json格式的字符串读入内存中的NSDictionary的最有效方法是什么?
在Eclipse中使用ActiveMQ时,有时可能会出现模式解析错误:
Caused by: org.xml.sax.SAXParseException: cvc-complex-type.2.4.c:
The matching wildcard is strict, but no declaration can be found for element 'amq:broker'.
Run Code Online (Sandbox Code Playgroud)
但是,该项目在Tomcat中成功部署.
我目前正在开发iPhone 2.1应用程序.我是Objective C的新手,来自Java背景.
我的应用程序以Xcode中的iPhone SDK提供的Utility Application模板为基础.目前我有一些控件,如UISlider和文本框FlipsideView.在UISlider已经有一个当值的变化,利用的目标和选择正被调用的方法.不过,我也希望能够阅读,从MainView,对当前(或最后一个)值UISlider和textbox.
请记住,我不熟悉Mac上的开发,并希望获得有关我应该查看此类信息的任何指导,无论是通过使用代理还是我遗漏了模板结构中明显的内容.
更新:我正在看结构并有更多细节:UISlider正在创建FlipsideView.m.我注意到Done按钮是从中创建的RootViewController.m,我可能应该将UISlider代码移到那里.我可能错误地使用了View保持在控制器中更合适的代码.
我的PFUser"firstName"和"lastName"上还有两列.他们保存得当; 我可以在数据浏览器中看到数据.
我有另一个PFObject"类",它具有一个带有NSArray PFUser的属性.我使用类方法+ fetchAllIfNeededInBackground:block:在PFObject上获取PFUsers数组.在回调块中,我在数组中的每个PFUser上调用objectForKey:但是我通过拥有的PFObject访问它们.
// invited is the NSArray of PFUsers
self.whoCell.mainLabel.text = [[self.plan.invited objectAtIndex:0]
objectForKey:@"firstName"];
Run Code Online (Sandbox Code Playgroud)
调试器在objectForKey调用之前的断点处输出:
(lldb) po self.plan.invited
(NSArray *) $4 = 0x06e62a60 <__NSArrayM 0x6e62a60>(
<PFUser:GCCdPjCU2J> {
firstName = Fake;
lastName = Account;
username = yyajnbafv53qw4yhjm9sfoiis;
}
)
Run Code Online (Sandbox Code Playgroud)
编辑:添加self.plan.invited的实现,因为上述内容具有误导性.
- (NSArray*)invited
{
// self.dataSource is a PFObject*
return [self.dataSource objectForKey:INVITED_PROP];
}
Run Code Online (Sandbox Code Playgroud)
然而,当上面调用它对objectForKey时:抛出此异常:
'NSInternalInconsistencyException', reason: 'Key "firstName" has no data. Call fetchIfNeeded before getting its value.'
Run Code Online (Sandbox Code Playgroud)
编辑:访问传递给+ fetchAllIfNeededInBackground的块回调的fetchedObjects数组不会抛出,但是访问最初传递给+ fetchAllIfNeededInBackground …
ios ×4
objective-c ×4
cocoa-touch ×2
eclipse ×2
iphone ×2
java ×2
debugging ×1
exception ×1
ios5 ×1
json ×1
springsource ×1
uiview ×1
xcode4 ×1