小编fes*_*s .的帖子

如何在目标C中扩展委托的协议,然后将对象子类化以要求一致的委托

我想继承UITextView,并向委托发送一条新消息.所以,我想扩展委托协议.这样做的正确方法是什么?

我从这开始:

接口:

#import <Foundation/Foundation.h>

@class MySubClass;

@protocol MySubClassDelegate <UITextViewDelegate>
- (void) MySubClassMessage: (MySubClass *) subclass;
@end


@interface MySubClass : UITextView {
}

@end
Run Code Online (Sandbox Code Playgroud)

执行:

#import "MySubClass.h"


@implementation MySubClass

- (void) SomeMethod; { 
    if ([self.delegate respondsToSelector: @selector (MySubClassMessage:)]) { 
        [self.delegate MySubClassMessage: self];
    }
}

@end
Run Code Online (Sandbox Code Playgroud)

然而我得到了警告:'-MySubClassMessage:' not found in protocol(s).

我有一种工作方式,我创建自己的ivar来存储委托,然后也使用[super setDelegate] 但是这似乎是错误的存储委托.也许不是.

我知道我可以直接传递id,但我的目标是确保编译器检查提供给MySubClass的任何委托是否符合MySubClassDelegate协议.

为了进一步克服:

@interface MySubClassTester : NSObject {

}

@implementation MySubClassTester

- (void) one { 
    MySubClass *subclass = [[MySubClass alloc] init];
    subclass.delegate = self;
} …
Run Code Online (Sandbox Code Playgroud)

iphone delegates objective-c

31
推荐指数
2
解决办法
2万
查看次数

标签 统计

delegates ×1

iphone ×1

objective-c ×1