【问题标题】:Do we need to declare variables inside class?我们需要在类中声明变量吗?
【发布时间】:2013-03-26 15:58:45
【问题描述】:

我是 Objective C 的新手,也是编程的新手。 我正在阅读一本名为“Objective C for Absolute Beginner”的书,当我尝试使用他们的示例进行练习时遇到问题。

在示例中,我们有一些方法要定义,它们必须使用一些变量。 但是没有行来声明这些变量,我的 Xcode 中出现错误。 然后我尝试在实现中声明这些变量并且它起作用了。 (不再有错误)

我的问题是,这本书缺少关于声明变量的内容还是没有必要?还是取决于 Xcode 版本? 因为在下一个示例中,我再次遇到此类问题。

我知道这可能是一个愚蠢的问题,但我是全新的 ^^。

非常感谢。

#import "RadioStation.h"

@implementation RadioStation

+ (double)minAMFrequency {
return 520.0;
}

+ (double)maxAMFrequency {
return 1610.0;
}

+ (double)minFMFrequency {
return 88.3;
}

+ (double)maxFMFrequency {
return 107.9;
}

- (id)initWithName:(NSString *)newName atFrequency:(double)newFrequency {
    self = [super init];
    if (self != nil) {
         name = newName;
         frequency = newFrequency;
    }
    return self;
}

- (NSString *)name {
    return name;
}

- (void)setName:(NSString *)newName {
     name = newName;
}

- (double)frequency {
     return frequency;
}

- (void)setFrequency:(double)newFrequency {
     frequency = newFrequency;
}
@end

【问题讨论】:

  • 我没有得到你的问题?您是要求不合成还是在 .m 而不是 .h 中声明方法?
  • 这是给您带来麻烦的代码吗?如果是这样,您必须在代码中的某处声明“名称”和“频率”,最好在 RadioStation.h 中声明。如果这不能回答您的问题,请详细说明...
  • 是的,我需要声明名称和频率来解决这个问题。但我想知道这是本书作者的错误,还是因为 Xcode 版本不同。谢谢大家,我认为这是本书作者的错误。

标签: objective-c xcode


【解决方案1】:

从您的代码看来,您有四个类方法,每个 name(NSString) 和 frequency(double) 有两个 setter/getter。

我想这两个是你的 RadioStation 类的属性。

@interface RadioStation : NSObject
@property (assign) NSString *name;
@property double frequency;
@end

或者它可能是 ivars:

@interface RadioStation : NSObject{
    NSString *name;
    double frequency;
}
@property (assign) NSString *name;
@property double frequency;
@end

或者,ivars 和属性的旧式组合

@interface RadioStation : NSObject{
    NSString *name;
    double frequency;
}
@end

【讨论】:

  • 是的,实际上我通过在我的文件中添加这些代码来解决我的问题,就像你说的那样。所以我的问题是这个问题的发生是因为 Xcode 版本的不同或本书作者的错误。非常感谢。
【解决方案2】:

您可以在 .h 或 .m 文件中声明变量,如下所示:

@interface MyViewController (){
    NSString *string;
    int integer;
}

在文件顶部的导入下方使用此代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    • 2011-05-14
    • 2011-04-23
    • 2020-09-11
    • 2012-01-17
    • 1970-01-01
    相关资源
    最近更新 更多