我一直在iPhone开发8个月左右,一般生活很好(例外是openGL lol)。
我正在构建iPhone 3D游戏,事情进展顺利。它在模拟器上工作正常(我知道不是真正的测试),它在设备上工作正常。
现在它似乎死在设备上并指向一些非常随机的东西。第一次它死(“EXC_BAD_ACCESS”)是委托的设置。
NSString *url = [NSString
stringWithFormat:@"%@GetPlayerPosition.aspx?playerIndex=%@",
self.baseURL, self.deviceID];
__block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:url]];
[request setDelegate:self];
所以我只是删除了代码。
下次它死时是它试图访问GLFloat数组
GLfloat v [] = {center [0] - eye [0], 中心[1] - 眼[1],中心[2] - 眼[2]};
再次非常随意并且一直工作到现在。就像它的内存耗尽而且只是满满的。有没有人有任何想法?班级人数有限制吗?
一般来说,我可以解决这个问题,但我甚至回到了工作版本并重新实现了一些代码,然后开始随机行为。
我检查了泄漏情况,我很好
更新:第2部分
在我的.h文件界面中,我有
GLfloat eye[3];
在我的.m中,我可以为每个元素分配一个值,它可以正常工作
如果我这样做
NSLog(@"%f",eye[0]);
它崩溃了。为什么是这样? (以前工作)
答案 0 :(得分:2)
如果发生崩溃(或崩溃),则会有回溯。发布它们。
尝试“构建和分析”。修复它给你的任何警告。修复编译器给你的任何警告。正确编写的应用程序应该在没有警告的情况下编译。
为什么代码行上的__block
?似乎没有任何相关的块。
编写软件时没有任何事情随意破坏。如果某些东西因看似无关的变化而崩溃,那么代码可能总是被破坏,但直到后来的变化才导致致命的问题。
由于您没有写信给request
,因此没有理由将该变量标记为__block
。由于__block
会导致request
不被保留,因此对象可能会过早释放&释放。也许
你如何分配浮点数组?
答案 1 :(得分:1)
EXC_BAD_ACCESS通常是过早释放的症状(例如,尝试访问已解除分配的对象,因为它被释放了太多次)。
它工作正常[...]现在好像死了
听起来你应该查看修订日志,看看这两个时间戳之间发生了什么变化。
答案 2 :(得分:1)
中心和眼睛是如何宣布的?它们是实例变量,全局变量还是静态变量?它可能以某种方式在回调发生时释放了这些数组的内存(这也解释了为什么初始化float数组的行失败)。