Я пытаюсь построить хороший класс треугольника, видя, что я использую их много. Я решил изменить свой класс, чтобы пользователь мог установить bool
, чтобы использовать градусы, а не радианы. Каждая вещь, по-прежнему, кажется, работает, как должно, кроме этого описания, интересно:Objective-C Описание не ведет себя так, как я ожидал.
IMTriangle *tri = [[IMTriangle alloc]init];
tri.shouldUseDegrees = YES;
tri.SideA = 3;
tri.SideB = 4;
tri.SideC = 5;
[tri solve];
NSLog(@"tri %@", tri);
double A = tri.angleA;
double B = tri.angleB;
double C = tri.angleC;
NSLog(@"A = %f B = %f C = %f",A,B,C);
NSLog(@"tri %@",tri);
дает мне это
tri a=3.0000 b=4.0000 c=5.0000 A=0.6435 B=0.9273 C=1.5708 perimeter=6.0000 area=12.0000 height=4.0000 shouldUseDegrees 1
A = 36.869897 B = 53.130098 C = 90.000004
tri a=3.0000 b=4.0000 c=5.0000 A=36.8699 B=53.1301 C=90.0000 perimeter=6.0000 area=12.0000 height=4.0000 shouldUseDegrees 1
После я получаю углы от моего объекта треугольника, чтобы использовать их, его описание вдруг это как и следовало ожидать. Я не знаю, если это что-то делать с пользовательскими сеттеров и добытчиками, я использую:
-(void) setAngleA:(double)angleA
{
if (!_shouldUseDegrees){
_angleA = angleA;
}
else _angleA = angleA * M_PI/180;
}
-(double) angleA
{
if (!_shouldUseDegrees) {
return _angleA;
}
return _angleA *= 180/M_PI;
}
или мое описание метода
-(NSString *) description;
{
return [NSString stringWithFormat:@"a=%.4f b=%.4f c=%.4f A=%.4f B=%.4f C=%.4f perimeter=%.4f area=%.4f height=%.4f shouldUseDegrees %i", _sideA , _sideB , _sideC , _angleA , _angleB , _angleC , self.area , self.perimeter , self.height ,_shouldUseDegrees];
}