CGFloat作为财产

use*_*984 5 iphone xcode objective-c ios

如何存储/检索CGFloat作为子类的属性UIImageView?我可以设置它的值,但是当我检索它时,它就是腐败的. NSString物业工作正常.

.H

@property CGFloat myFloat;
Run Code Online (Sandbox Code Playgroud)

.M

[sender setMyFloat:someFloat];
[sender myFloat];  //<- corrupt? 
Run Code Online (Sandbox Code Playgroud)

********* 更新***********

我想感谢你们所有的建议,他们都是正确的.我的问题比我想象的要复杂得多.发件人是UIPanGestureRecognizer附加到UIImageview我遇到了问题.UIPanGestureRecognizer调用选择器move:(id)sender,这就是我的问题所在.

在移动中:我可以成功执行:

[[sender view] setMyString:@"test"];
Run Code Online (Sandbox Code Playgroud)

然后用它取回它

[[sender view] myString];
Run Code Online (Sandbox Code Playgroud)

但是,如果不包括(id)self,我根本无法设置或检索任何浮动属性.例如:

[[sender view] setMyString:@"test"]; //->works

[[sender view] setMyFloat:1.0f]; //->does not work
Run Code Online (Sandbox Code Playgroud)

但这有效:

[[[sender view]self] setMyFloat:1.0f]; //->works
Run Code Online (Sandbox Code Playgroud)

这是一个奇怪的部分,让我相信我的浮动有铸造问题!我有几个NSString属性,它们返回很好,但CGFloats不会.有人可以向我解释为什么不知何故我用字符串取得了成功但浮动在这里丢失了吗?

XJo*_*nes 3

答案#2:NSLog 语法?

设置后如何验证该值?如果您使用 NSLog,请确保您拥有正确的浮点数格式代码(例如NSLog(@"new float value = %f", myFloat).

原始答案:错误的设置者(有问题的拼写错误)

您调用了错误的 setter 方法。正确的设置者是:

`[sender setMyFloat:someFloat]`
Run Code Online (Sandbox Code Playgroud)

编辑:OP 已更新他的问题以删除拼写错误