2013-04-10 3 views
1

Я прочитал вопрос после вопроса о том, что люди получают ту же ошибку, что и я, но я просто не понимаю их, поэтому прежде чем вы начнете искать повторяющиеся вопросы, может быть, кто-то может объяснить мне что я делаю неправильно с этой подклассовой сделкой.Подкласс подкласса UIImageView - ошибки декларации в прямом направлении

У меня есть подкласс UIImageView под названием swapView, что я хочу подкласс переопределить метод -(void)count для особых случаев. Я пошел к подклассу это как у меня есть какой-либо уже существующий класс UIKit, но когда я пытался построить и запустить проект, я получаю эту ошибку:

Attempting to use the forward class 'swapView' as superclass of 'coinView' 

Я попытался положить как #import заявления swapView и @class swapView в coinView.h, и я попытался поставить оператор импорта в coinView.m, но он отказывается строить из-за этой продолжающейся ошибки. Если я перемещаю оператор import в файл .m, все ссылки на методы и свойства суперкласса, например @property (nonatomic) int max;, также вызывают ошибки.

Что я делаю неправильно?

swapView.h

#import <UIKit/UIKit.h> 

#import "ViewController.h" 

@class ViewController; 

@interface swapView : UIImageView 
{ 
    NSTimer* tmr; 
} 

@property (nonatomic) int current; 
@property (nonatomic) int max; 
@property (nonatomic, retain) UIImage* firstImage; 
@property (nonatomic, retain) UIImage* secondImage; 
@property (nonatomic) BOOL smallMax; 

@property (nonatomic, retain) ViewController* pvc; 

- (BOOL)testCollision:(CGPoint)point; 
- (float)randomFloatBetween:(float)smallNumber bigNumber:(float)bigNumber; 

@end 

coinView.h

#import "swapView.h" 

@class swapView; 

@interface coinView : swapView 

- (void)count; 
- (void)move; 

@end 
+1

Как насчет удалить @class swapView; в coinView.h? – yibuyiqu

+0

Вызывает 'Не удается найти декларацию интерфейса для 'swapView', суперкласс« coinView » – David

+0

Вы уверены, что все правильно написано? Я не получаю ошибок с вашим кодом, если я импортирую swapView.h (а не используя @class) в файл coinView.h. Кстати, вы должны использовать имена ваших классов. – rdelmar

ответ

1

Для наследования, родительский класс должен быть унаследован.

coinView.h

#import "swapView.h" 
@interface coinView : swapView 
    - (void)count; 
    - (void)move; 
@end 

Вы оба вперед декларирование и импорта ViewController.h в вашем swapView, что может вызвать компилятор жаловаться.

swapView.h

#import <UIKit/UIKit.h> 

@class ViewController 

@interface swapView : UIImageView 
. 
. 
. 
@end