-1

我希望这是有道理的。我正在尝试将半径定义为用户输入的内容。我该怎么做?

#import "circle.h"

@implementation circle

-(double) radius {
    double radius = 
}

-(double) pi {
    double pi = 3.14159;
    return pi;
}

@synthesize setRadius, getRadius;

-(double) getArea {
    double area = pi * radius * radius;
    return area;
}

-(double) getDiameter {
    double diameter = 2 * radius;
    return diameter;
}

-(double) getCircumcerence {
    double circumference = 2 * pi * radius;
    return circumference;
}
@end

这是一个什么都没有的句子,所以它会让我发布我的问题,因为它不是主要的代码。

4

2 回答 2

0

更新我的答案,因为我误读了原始问题。让我说明我假设您正在尝试做的事情:

在 Objective C 类上设置一个名为“radius”的属性的值。接口(标头)应具有以下内容:

  @property (nonatomic, assign) double radius; 

您正在合成该属性,我会假设您想要/需要这样做。但是你的语法是错误的。它应该是:

    @synthesize radius;

实例变量,默认为:_radius

所以,你的二传手将是:

- (void)setRadius:(double)radius
{
   _radius = radius;
}

吸气剂可能看起来像:

-(double)radius
{
    return _radius;
}

如果愿意,您可以在 @synthesize 语句中设置不同的支持变量,默认情况下您将获得 _radius

请记住,除非您在 setter 和 getter 中有一些自定义逻辑,否则您根本不需要定义这些方法。默认情况下,您甚至不需要合成属性。编译器会处理所有这些。

更多信息: http ://useyourloaf.com/blog/2012/08/01/property-synthesis-with-xcode-4-dot-4.html

于 2013-11-07T01:06:49.057 回答
0

将此作为方法添加到您的circle类中:

-(void)setRadius:(double)input {
    radius = input;
}

假设您没有使用@properties,我强烈推荐(并提供了一个示例来回答您的其他问题),这就是您setter在 Objective-C 中正确创建 a 的方式。 radius需要在此方法之外声明为类的变量,以便它可以被您的其他方法调用,例如getCircumference等。


为了创建一个私有实例变量,您需要将其添加到@implementation行尾:

@implementation circle {
    double radius;
}

但同样,这样做是假设你没有走的路线@properties,我强烈推荐。


要从 main 中使用它:

circle *myCircle = [[circle alloc] init];
[circle setRadius:1.0];  //the radius is now 1.0
double newRadius = 27.0;
[circle setRadius:newRadius];  //now the radius is 27.0
于 2013-11-07T01:20:00.827 回答