如何静默警告不兼容的属性类型

时间:2013-02-19 11:11:06

标签: objective-c cocoa uiscrollview

我在我的项目中使用来自github的RTSPagedView。这给了我这个警告

  Property type 'id<RTSPagedViewDelegate>' is incompatible with type 'id<UIScrollViewDelegate>' unherited from 'UIScrollView'

@property (nonatomic, assign) IBOutlet id <RTSPagedViewDelegate> delegate;

RTSPagedView.h

中的

应用程序正常处理此警告。任何人之前都遇到过这个问题,或者知道解决方案请帮助。

此链接为RTSPagedView

//  RTSPagedView.h
//  PagedView
//  http://github.com/rplasman/RTSPagedView

#import <UIKit/UIKit.h>

@protocol RTSPagedViewDelegate;

@interface RTSPagedView : UIScrollView

@property (nonatomic, assign) IBOutlet id <RTSPagedViewDelegate> delegate;
@property (nonatomic, assign) NSUInteger currentPage;
@property (nonatomic, readonly) NSUInteger numberOfPages;
@property (nonatomic, assign) BOOL continuous;

- (void)resizeBounds:(CGRect)bounds;
- (UIView *)dequeueReusableViewWithTag:(NSInteger)tag;
- (UIView *)viewForPageAtIndex:(NSUInteger)index;
- (void)scrollToPageAtIndex:(NSUInteger)index animated:(BOOL)animated;
- (void)reloadData;
- (NSUInteger)indexForView:(UIView *)view;

@end

@protocol RTSPagedViewDelegate <UIScrollViewDelegate>

- (NSUInteger)numberOfPagesInPagedView:(RTSPagedView *)pagedView;
- (UIView *)pagedView:(RTSPagedView *)pagedView viewForPageAtIndex:(NSUInteger)index;

@optional

- (void)pagedView:(RTSPagedView *)pagedView didScrollToPageAtIndex:(NSUInteger)index;
- (void)pagedView:(RTSPagedView *)pagedView didRecycleView:(UIView *)view;
@end

3 个答案:

答案 0 :(得分:3)

以这种方式尝试:

@property (nonatomic, assign) IBOutlet id <UIScrollViewDelegate, RTSPagedViewDelegate> delegate;

适合我。

答案 1 :(得分:2)

问题发生是因为

 @property (nonatomic, assign) IBOutlet id <RTSPagedViewDelegate> delegate;

因为UIScrollViewDelagate是从RTSPagedView继承而来的,所以这个delagate正在考虑UIScrollView

使用任何其他名称修改完整的委托名称,例如

 @property (nonatomic, assign) IBOutlet id <RTSPagedViewDelegate> rtspDelegate;

它将删除警告。

答案 2 :(得分:0)

认为(我不能确定没有更多代码)你没有宣布你的委托类符合RTSPagedViewDelegate协议。

试试这个:

YourClass.h:

@interface YourClass : NSObject <UIScrollViewDelegate, RTSPagedViewDelegate>

...

@end

现在你做的时候:

rtsPageView.delegate = self;

警告应该消失。

这可能是完全垃圾,在这种情况下我会删除它。