Getters & Setters Objective C vs C#

本文关键字:vs Objective Setters amp Getters | 更新日期: 2023-09-27 17:50:11

在objective c中复制下面的c#代码的最佳方法是什么?

我正在使用setter方法来添加一些额外的功能。

    void someMethod()
    {
        speed = 10; //_speed is 10
        speed++;//_speed is now 11
        speed += 70;//_speed is now 86
        speed += 12324;//_speed is clamped to 100 in setter
    }
    int _speed;
    public int speed
    {
        get { return _speed; }
        set { _speed = value;
            if (_speed > 100)
            {
                _speed = 100;
            }
        }
    }

我知道我可以在obj c

中做这样的事情
@property (nonatomic,assign) NSInteger speed;

使这些方法可用

-(void)setSpeed:(NSInteger)speed
{
}
-(void)getSpeed:(<#object-type#> **)buffer range:(NSRange)inRange
{
}

然而,我不确定如何在我的类内部实际访问属性。我想要能够做的是在其他地方在类实例(和/或从实例化对象)是通过做一些像速度= 50设置速度,并知道setter中的代码将确保它永远不会超过最大。

我希望这有意义!

谢谢!

Getters & Setters Objective C vs C#

Xcode在你定义属性时自动为你生成getter和setter,所以你已经有了它们,你可以这样访问它们:

self.speed = 5;
int mySpeed = self.speed;

如果你想覆盖这个setter,你可以这样做:

-(void)setSpeed:(NSInteger)speed
{
    if (speed > maxSpeed)
        _speed = maxSpeed;
    else
        _speed = speed;
}

请注意,在使用对象时,如果实现setter,则需要释放前一个值并保留新值。