CGFloat作为财产

时间:2011-11-17 17:56:35

标签: iphone objective-c ios xcode

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

·H

@property CGFloat myFloat;

的.m

[sender setMyFloat:someFloat];
[sender myFloat];  //<- corrupt? 

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

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

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

[[sender view] setMyString:@"test"];

并使用

将其检索回来
[[sender view] myString];

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

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

[[sender view] setMyFloat:1.0f]; //->does not work

但这有效:

[[[sender view]self] setMyFloat:1.0f]; //->works

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

3 个答案:

答案 0 :(得分:3)

答案#2:NSLog语法?

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

原始回答:错误的二传手(有问题的拼写错误)

您正在调用错误的setter方法。正确的二传手是:

`[sender setMyFloat:someFloat]`

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

答案 1 :(得分:2)

试试这个:

.h:

@interface SomeClass : UIImageView {
    CGFloat _someFloat;
}

@property (nonatomic) CGFloat someFloat;

@end

.m:

@implementation SomeClass
@synthesize someFloat = _someFloat;
...
...
...
@end

答案 2 :(得分:1)

你应该在你的.m中写@synthesize myFloat来为ivar创建getter / setter