编译器错误 - iOS“预期”)“在“问题”之前

问题描述 投票:0回答:2

下面的代码有什么问题? Xcode 4 表示,由于“Question”之前有“expected”)”消息,带有“Question”的两个方法声明无法编译,如下面代码中的注释所示。Question 类会编译,并且此代码我之前一直在工作。我对问题进行了一些更改,但支持它们以尝试找出此编译时错误。

#import <Foundation/Foundation.h> #import "Question.h" @interface AppState : NSObject { int chosenAnswer; int correctAnswers; int currentQuestionNumber; // this will contain the hash table of question objects NSMutableDictionary *questionHash; } @property (nonatomic) int chosenAnswer; @property (nonatomic) int correctAnswers; @property (nonatomic) int currentQuestionNumber; @property (nonatomic, retain) NSDictionary *questionHash; - (void) printQuestions; - (void) printDescription; - (void) addQuestion: (Question *) question; // <==== error - (int) numberOfQuestions; - (void) saveState; - (void) resetState; - (Question *) currentQuestion; // <===== error @end

这是问题.h:

#import <Foundation/Foundation.h> #import "AppState.h" @interface Question : NSObject { NSString *questionTxt; int correctAnswer; int number; // this will contain the hash table of questions_answer objects NSMutableDictionary *answerHash; } @property (nonatomic, retain) NSString * questionTxt; @property (nonatomic) int correctAnswer; @property (nonatomic) int number; @property (nonatomic, retain) NSMutableDictionary *answerHash; -(void) addAnswer: (NSString *) answer; - (NSMutableArray *) answerArray; - (void) printDescription; - (void) printAnswers; - (NSString *) correctAnswerText; - (Question *) currentQuestion; @end
    
ios objective-c
2个回答
4
投票
循环依赖? AppState 正在导入问题,问题正在导入 AppState。

向前声明其中之一来打破循环,例如在 AppState @interface 语句之前使用 @class Question,就像这样

@class Question; @interface AppState : NSObject { int chosenAnswer; int correctAnswers; int currentQuestionNumber; // this will contain the hash table of question objects NSMutableDictionary *questionHash; } ...

相关问题:

@class vs. #import


0
投票
当您在问题中#import“AppState.h”时,您会产生循环依赖关系。 最好将 #import "AppState.h" 和 #import "Question.h" 移至实现部分。在标题中留下

@class Question;

@class AppState;

在接口声明之前。

© www.soinside.com 2019 - 2024. All rights reserved.