我需要帮助调试我的课程。我得到一个非常奇怪的错误,我找不到任何类似的,所以我只是要放下我的大部分代码。

//Tab.h
#import <UIKit/UIKit.h>
@class Tab;
@protocol TabDelegateDataSource <NSObject>
@required
-(void)removeTab:(Tab *)tab;
@end

@interface Tab : UIView
{
     id <TabDelegateDataSource> __strong _delegate;
}

@property(strong) id <TabDelegateDataSource> delegate;

-(void)removeTab;

@end

//  Tab.m
#import "Tab.h"
@implementation Tab
@synthesize delegate = _delegate;
-(void)removeTab
{
    [self.delegate removeTab:self];//Error here saying: No known instance method for selector 'removeTab:'
}

@end

最佳答案

我现在可以随意重新创建并修复此错误。
确保定义此项的.h头…

@protocol TabDelegateDataSource <NSObject>
-(void)removeTab:(Tab *)tab;
@end

…包含在您计划使用委托的任何位置,例如.m源的顶部,其中包括:
[self.delegate removeTab:self]

如果编译器只看到tabdelegatedatasource的正向定义如下:
@protocol TabDelegateDataSource;

您将得到错误:
error: no known instance method for selector 'removeTab:'

而不是更期望的与正向定义相关的错误

09-09 18:55