[英]Getters & Setters Objective C vs C#
在目標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
{
}
但是我不確定如何在課堂上實際訪問內部屬性。 我想做的是在類實例的其他地方(和/或也從實例化對象)通過執行諸如speed = 50之類的操作來設置速度,並且知道設置器中的代碼將確保它永遠不會超過最大。
我希望這是有道理的!
謝謝!
Xcode在定義屬性時會自動為您生成getter和setter,因此您已經擁有了它們,您可以像這樣訪問它們:
self.speed = 5;
int mySpeed = self.speed;
如果您想覆蓋此設置器,可以執行以下操作:
-(void)setSpeed:(NSInteger)speed
{
if (speed > maxSpeed)
_speed = maxSpeed;
else
_speed = speed;
}
考慮到在使用對象時,如果實現了setter,則需要釋放先前的值並保留新的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.