如何从一个.h或.m文件中获取NSInteger到另一个.h或.m文件?

时间:2011-02-12 00:34:13

标签: ios4

我想要一个测验,最后显示得分。但由于它是在一对不同的.h和.m文件中,我该怎么把它带过来?

2 个答案:

答案 0 :(得分:0)

在将接收整数的代码文件中,创建一个属性和方法签名,如下所示:

@interface FinalViewController : UIViewController{
    NSInteger finalScore;
}

@property(nonatomic, retain) NSInteger finalScore;

-(void)setFinalScore:(NSInteger)num;
@end

方法应如下所示:

-(void)setFinalScore:(NSInteger)num{
self.finalScore = num;
}

然后,从原始视图中实例化视图控制器的部分应如下所示:

FinalViewController *finalView = [[FinalViewController alloc] initWithNibName:@"FinalView" 
bundle:nil]; [finalView setFinalScore:score] [view addSubview:finalView.view];

答案 1 :(得分:0)

这是一个模糊的问题,但关键字 extern 会浮现在脑海中。它允许文件共享变量。

ScoreGiver控制得分如。 ScoreNeeder使用相同的分数。

<强> ScoreGiver.h:

int score;
void incrementScore();

<强> ScoreGiver.m:

#import "ScoreGiver.h"

int score = 0;

void incrementScore() {
    score++;
}

<强> ScoreNeeder.h:

extern int score;
void logScore();

<强> ScoreNeeder.m:

#import "ScoreNeeder.h"

void logScore() {
    NSLog(@"This score is now: %d", score);
}

<强>的main.m:

#import "ScoreNeeder.h"
#import "ScoreGiver.h"

/*********OUTPUT************
 The score is now: 0
 The score is now: 1
 The score is now: 3
 ***************************/
int main (int argc, const char * argv[]) {
    logScore();
    incrementScore();
    logScore();
    incrementScore();
    incrementScore();
    logScore();
}

NB:使用像这样的全局变量是不好的编程习惯,特别是在面向对象语言中。