gpt4 book ai didi

iphone - Setter Getter 奇怪@property

转载 作者:行者123 更新时间:2023-12-03 21:12:34 24 4
gpt4 key购买 nike

我在尝试将一个简单的浮点值设置为 1 时遇到了一个非常奇怪的问题。

我的属性(property):

{
float direction;
}
@property(nonatomic)float direction;

合成的:

@synthesize direction;

然后我使用了以下代码:

- (void)setDirection:(float)_direction {
NSLog(@"Setter called with value of %f",_direction);
self->direction = _direction;
}

出于测试目的...

当我尝试用它更改值时,

[[w getCharacter] setDirection:1.0f];

其中 [w getCharacter] 给出:

return [[[self scene] gameLayer] player];

我收到警告:“setDirection 未定义。”

如果我切换到点符号([w getCharacter].direction),我会“被之前的错误搞糊涂了,退出”。

奇怪的事情就是从这里开始的。当我尝试更改该值时,调试消息显示 _direction = 0.00000。当我稍后查看这个数字时,它仍然是 0.000。我显然想将其更改为 1,为什么这不起作用?

最佳答案

最简单的解释是,[w getCharacter] 不会返回您认为它返回的对象类。只有为其定义了方向的类才能响应该消息。您应该通过使用它定义的类显式调用它来测试它。

您可能没有包含定义该方法的 header 。

两个可能不相关的问题:

self->direction 构造适用于标量值,但它会围绕整个类概念进行最终运行。在这种情况下,只需使用:'direction=_direction;`,它就会直接设置它。

Apple 保留所有以下划线开头的名称供其内部使用。您不应该使用它们,因为 Objective-c 有一个全局 namespace 。您可能会意外地使用在框架深处定义的 Apple 变量。 (这就是为什么框架常量都以 NS、CF、CA 等开头)

关于iphone - Setter Getter 奇怪@property,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2136108/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com