Ios 如何正确复制并返回CGFloat

Ios 如何正确复制并返回CGFloat,ios,objective-c,Ios,Objective C,我有这个代码,我复制我的浮动,我需要记住 - (void) rememberThisFloatForLater:(CGFloat)floatToRemember { self.rememberedFloat = &(floatToRemember); } 下面是头文件中的self.rememberedFloat @property (assign) CGFloat *rememberedFloat; 我的问题是当我试图返回记忆中的浮动时。当我返回它时,我得到6.928670513

我有这个代码,我复制我的浮动,我需要记住

- (void) rememberThisFloatForLater:(CGFloat)floatToRemember {

self.rememberedFloat = &(floatToRemember);

}
下面是头文件中的self.rememberedFloat

@property (assign) CGFloat *rememberedFloat;
我的问题是当我试图返回记忆中的浮动时。当我返回它时,我得到6.92867051318e-310,我应该得到3.14159265359,因为这就是floatToRemember的值。我哪里做错了

- (CGFloat) floatYouShouldRemember {

return *(self.rememberedFloat);
}

CGFloat是一种基本类型。这将是非常非常不寻常的,你会有一个CGFloat*类型的属性。改用CGFloat


想想你一直在做什么:floatToRemember是一个方法参数,它与局部变量大致相同。您正在获取该变量的地址并将其存储。然后您的方法返回。这意味着局部变量消失了。这意味着它的地址现在完全是垃圾。其实比垃圾还糟糕;它是一个不确定的值,几乎任何使用它的操作都是未定义的行为,如果你运气好,它会立即使你的程序崩溃(如果你运气不好,当客户使用它时,它也会使你的程序崩溃)

CGFloat是一种基本类型。这将是非常非常不寻常的,你会有一个CGFloat*类型的属性。改用CGFloat


想想你一直在做什么:floatToRemember是一个方法参数,它与局部变量大致相同。您正在获取该变量的地址并将其存储。然后您的方法返回。这意味着局部变量消失了。这意味着它的地址现在完全是垃圾。其实比垃圾还糟糕;它是一个不确定的值,几乎任何使用它的操作都是未定义的行为,如果你运气好,它会立即使你的程序崩溃(如果你运气不好,当客户使用它时,它也会使你的程序崩溃)

CGFloat是一种基本类型。这将是非常非常不寻常的,你会有一个CGFloat*类型的属性。改用CGFloat


想想你一直在做什么:floatToRemember是一个方法参数,它与局部变量大致相同。您正在获取该变量的地址并将其存储。然后您的方法返回。这意味着局部变量消失了。这意味着它的地址现在完全是垃圾。其实比垃圾还糟糕;它是一个不确定的值,几乎任何使用它的操作都是未定义的行为,如果你运气好,它会立即使你的程序崩溃(如果你运气不好,当客户使用它时,它也会使你的程序崩溃)

CGFloat是一种基本类型。这将是非常非常不寻常的,你会有一个CGFloat*类型的属性。改用CGFloat


想想你一直在做什么:floatToRemember是一个方法参数,它与局部变量大致相同。您正在获取该变量的地址并将其存储。然后您的方法返回。这意味着局部变量消失了。这意味着它的地址现在完全是垃圾。其实比垃圾还糟糕;它是一个不确定的值,几乎任何使用它的操作都是未定义的行为,如果你运气好,它会立即使你的程序崩溃(如果你运气不好,当客户使用它时,它也会使你的程序崩溃)

编辑:我明白你现在说的了。我去掉了标题中的指针,然后在下面的两种方法中对其进行了更改。谢谢你指出我的简单错误:)可以用更好的措辞,但这是正确的。原语足够小,可以直接访问,而不是通过引用访问,所以要复制它们,只需分配它们。有时你会希望指针作为一个基本的方法参数,但这是一个更高级的用例。简单的回答是CGFloat是一种原始类型-你不需要做任何事情来复制它。编辑:我明白你的意思了。我去掉了标题中的指针,然后在下面的两种方法中对其进行了更改。谢谢你指出我的简单错误:)可以用更好的措辞,但这是正确的。原语足够小,可以直接访问,而不是通过引用访问,所以要复制它们,只需分配它们。有时你会希望指针作为一个基本的方法参数,但这是一个更高级的用例。简单的回答是CGFloat是一种原始类型-你不需要做任何事情来复制它。编辑:我明白你的意思了。我去掉了标题中的指针,然后在下面的两种方法中对其进行了更改。谢谢你指出我的简单错误:)可以用更好的措辞,但这是正确的。原语足够小,可以直接访问,而不是通过引用访问,所以要复制它们,只需分配它们。有时你会希望指针作为一个基本的方法参数,但这是一个更高级的用例。简单的回答是CGFloat是一种原始类型-你不需要做任何事情来复制它。编辑:我明白你的意思了。我去掉了标题中的指针,然后在下面的两种方法中对其进行了更改。谢谢你指出我的简单错误:)可以用更好的措辞,但这是正确的。原语足够小,可以直接访问,而不是通过引用访问,所以要复制它们,只需分配它们。有时你会希望指针作为一个基本的方法参数,但这是一个更高级的用例。简单的回答是CGFloat是一种原始类型-你不需要做任何事情来复制它。分配它就行了。