Iphone 目标C浮点值在内部转换-不知道为什么

Iphone 目标C浮点值在内部转换-不知道为什么,iphone,objective-c,cocos2d-iphone,Iphone,Objective C,Cocos2d Iphone,我用Cocos2D写了一个游戏,它包含了很多浮点类型的属性来确定我的形状(正方形,三角形)的顶点(x,y)。我有一个Shape类,它只保存顶点总数(int)和顶点总数(CGFloat*)。我还有一个类叫做ShapeHolder,它定义了不同类型形状的值,它的属性叫做shapesquare;和形状三角形。在ShapeHolder init am中存储(硬编码)顶点信息(x,y),如下所示,am也会在定义后立即打印值,这非常有效 CGPoint _square[] = {

我用Cocos2D写了一个游戏,它包含了很多浮点类型的属性来确定我的形状(正方形,三角形)的顶点(x,y)。我有一个Shape类,它只保存顶点总数(int)和顶点总数(CGFloat*)。我还有一个类叫做ShapeHolder,它定义了不同类型形状的值,它的属性叫做
shapesquare;和形状三角形
。在ShapeHolder init am中存储(硬编码)顶点信息(x,y),如下所示,am也会在定义后立即打印值,这非常有效

          CGPoint _square[] = {
        CGPointMake(100.0f, 100.0f) , 
        CGPointMake(200.0f, 100.0f) , 
        CGPointMake(200.0f, 200.0f) , 
        CGPointMake(100.0f, 200.0f)
    };. 
            square = [[[Shape alloc] initWithVerticesLength: 4] retain];
        square.vertices = _square;
        for (int i = 0; i< square.count; i++) {
            NSLog(@"Init Square Vertices X Y = %f , %f" , square.vertices[i].x ,square.vertices[i].y );
        }
        triangle = [[[Shape alloc] initWithVerticesLength: 3] retain];
        triangle.vertices = _triangle;

看起来您正在为_square做数组指针的浅拷贝。您需要将顶点深度复制到对象中的成员数组中


第一个顶点没有被更改的原因是类保留指向数组中第一个点的指针。阵列中的后续顶点将由内存管理器回收并重新使用。也可能是运气。

看起来你正在做数组指针ie\u square的浅拷贝。您需要将每个顶点深度复制到对象中的数组中。您节省了我的时间,非常感谢。还有一个问题,我可以知道班级中的第一个打印值是如何正确打印的吗?我还在阅读浅拷贝与深拷贝的对比。非常感谢。不看代码很难说。取决于_square是如何形成的。这非常有效,我已经编辑了我的问题,在我应该如何标记你的回答为接受之间。但是obj-c运行时决定给出下一个指针。内存管理器可能是一个不准确的描述。我希望这四个都能改变。
        allShapes = [[ShapeHolder alloc] init];
        for (int i = 0; i< allShapes.square.count; i++) {
            NSLog(@"Main Square Vertices X Y = %f , %f" , [[allShapes square]vertices][i].x ,[[allShapes square] vertices][i].y );

        }
Init Square Vertices X Y = 100.000000 , 100.000000 
Init Square Vertices X Y = 200.000000 , 100.000000 
Init Square Vertices X Y = 200.000000 , 200.000000 
Init Square Vertices X Y = 100.000000 , 200.000000 

Main Square Vertices X Y = 100.000000 , 100.000000 
Main Square Vertices X Y = -1.998910 , 0.000000 
Main Square Vertices X Y = 0.000000 , 0.000000 
Main Square Vertices X Y = -1.998912 , 0.000000