我的FooterSelectorView.h遇到两个问题,我也不知道为什么。一个是警告,而另一个是错误。由于某些原因,xcode无法识别FooterArchiveItemView,因此我无法将我的对象键入引起其他问题的对象。以前有没有人看过这样的东西?我该如何解决?

FooterSelectorView.h

#import <UIKit/UIKit.h>
#import "FooterArchiveItemView.h"

@interface FooterSelectorView : UIImageView

// #warning Type of property 'activeItem' does not match type of accessor 'setActiveItem:'
@property (nonatomic, retain) FooterArchiveItemView *activeItem;

// #error Expected a type
- (void)setActiveItem:(FooterArchiveItemView *)activeItem_;
- (void)update;
- (CGPoint)absoluteCenterOf:(UIView *)obj;

@end

相关 class

FooterArchiveItemView.h
#import <UIKit/UIKit.h>
#import "AutosizeableView.h"
#import "FooterArchiveView.h"

typedef void (^ DayBlock)(void);

@interface FooterArchiveItemView : AutosizeableView {
    DayBlock dayBlock;
}

@property (nonatomic, retain) IBOutlet UIButton *day;
@property (nonatomic, retain) IBOutlet UIImageView *bullet;

- (void)setDayBlock:(DayBlock)block;

@end

AutosizeableView.h
#import <UIKit/UIKit.h>

@interface AutosizeableView : UIView

@end

最佳答案

我建议的一件事是,您符合Obj-C的惯例,即在标头接口文件中而不是导入自定义类,而是对它们进行前声明。例如,在FooterSelectorView.h中,而不是:

#import "FooterArchiveItemView.h"

向前宣告 class :
@class FooterArchiveItemView

然后,在实现文件(FooterSelectorView.m)中导入。在这种情况下,遵守惯例可能并不能真正解决您的问题(我不知道到底是怎么回事,我个人想看一点代码来冒险),但这可能有助于您解决问题。

Apple的框架是该规则的显着例外-将其导入到标头中。

关于ios - 找不到ios类别“预期类型”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9607489/

10-11 07:54