I my simple iOS object-c app У меня есть два файла .h, связанных друг с другом. Один из них - Delegate Protocol
, другой - Interface
для класса, который определяет NS_ENUM
.Решите круговую зависимость
Это файл интерфейса (HistogramView.h):
#import <UIKit/UIKit.h>
#import "DiagramViewDataSource.h"
#import "DiagramViewDelegate.h"
typedef NS_ENUM(NSInteger, MoveOperation) {
MOVE_BACKWARD,
MOVE_FORWARD
};
@interface HistogramView : UIView
@property (weak) id <DiagramViewDelegate> delegate;
@property (weak) id <DiagramViewDataSource> dataSource;
@end
И это протокол делегат (DiagramViewDelegate.h):
#import <Foundation/Foundation.h>
#import "HistogramView.h"
@protocol DiagramViewDelegate <NSObject>
-(void)diagramSectionChangedWithOperation:(MoveOperation)op;
@end
В делегатом, компилятор выдает мне ошибку связанный с параметром MoveOperation
: «Ожидаемый тип». Я попытался также добавить @class HistogramView
перед тем @protocol
таким образом:
#import <Foundation/Foundation.h>
#import "HistogramView.h"
@class HistogramView;
@protocol DiagramViewDelegate <NSObject>
-(void)diagramSectionChangedWithOperation:(MoveOperation)op;
@end
, но ничего не меняется. Вы можете мне помочь? Заранее спасибо.
Вариант 4: Переместить 'enum' декларацию DiagramViewDelegate.h. Но вариант 3 лучше. – rmaddy
@rmaddy - mea culpa, я пропустил этот, но потом я не сказал, что список был исчерпывающим ;-) – CRD
Всегда заголовок констант - это хорошо. – uchuugaka