我查了所有在我的代码,并不能找到这崩溃之源: 我试图解码与NSKeyedUnarchiver一个对象,它在它的每一次崩溃,并说:Objc内存崩溃与autorelase
*** __NSAutoreleaseFreedObject(): release of previously deallocated object (0x1008ad200) ignored
*** __NSAutoreleaseFreedObject(): release of previously deallocated object (0x1008ab200) ignored
*** __NSAutoreleaseFreedObject(): release of previously deallocated object (0x1008a8c00) ignored
哈我不好意思为什么initWithCoder没有被调用是因为它有问题[super initWithCoder:];这仍然让我发疯。我一看,指针和NSData的对象是什么走错了:
vertices = malloc(size_point3D * vertexCount);
textureCoords = malloc(size_point2D * textureCount);
normals = malloc(size_point3D * normalCount);
faces = malloc(sizeof(GLuint) * faceCount);
NSData *vertexData = [[NSData alloc] initWithData:[coder decodeObjectForKey:@"vertices"]];
NSData *textureData = [[NSData alloc] initWithData:[coder decodeObjectForKey:@"textureCoords"]];
NSData *normalData = [[NSData alloc] initWithData:[coder decodeObjectForKey:@"normals"]];
NSData *faceData = [[NSData alloc] initWithData:[coder decodeObjectForKey:@"faces"]];
memcpy(vertices, [vertexData bytes], sizeof(point3D) * vertexCount);
memcpy(textureCoords, [textureData bytes], sizeof(point2D) * textureCount);
memcpy(normals, [normalData bytes], sizeof(point3D) * normalCount);
memcpy(faces, [faceData bytes], sizeof(GLuint) * faceCount);
[vertexData release];
[textureData release];
[normalData release];
[faceData release];
我试图保留这部分(甚至是字符串)的一切,但它并不能帮助。
你可以张贴一些代码? – 2010-09-06 03:56:21
嗯,但它是一个非常深的堆栈 – 2010-09-06 04:05:47
它看起来像你正在重新定义模型。路径是伊娃吗?我认为步骤1将确切地找出哪个对象试图获得两次释放。有点棘手,只有很少的代码可以继续。 – taber 2010-09-06 04:39:53