我想要一个测验,最后显示得分。但由于它是在一对不同的.h和.m文件中,我该怎么把它带过来?
答案 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:使用像这样的全局变量是不好的编程习惯,特别是在面向对象语言中。