如何实现这种情况

时间:2014-03-07 12:21:47

标签: ios objective-c oop

我有A,B和C类,所有3个类都有2个方法。

class A
- (void)onSuccess {
}

- (void)onFailure {
}

然后我会做一个CommonClass的任务。如果班级A正在提交CommonClass,并且在执行完所有任务后,我必须在班级onSuccess()中调用onFailure()A

这是最好的方法,以及如何做到这一点?在Java中,它由extendabstract完成。

2 个答案:

答案 0 :(得分:1)

您可以创建这样的协议类。这只有一个.h文件

@protocol RequestProtocolDelegate <NSObject>

@optional
    - (void)onSuccess;
    - (void)onFailure;
@end

并在你的班级中使用它

档案.h

#include "RequestProtocolDelegate.h"

@interface CommonClass : NSObject <RequestProtocolDelegate> {

}

@end

文件.m

- (void)onSuccess {

}
- (void)onFailure {

}

现在您可以在您的CommonClass中使用此协议

答案 1 :(得分:0)

如果我理解正确,那么应该通过授权完成。考试:

//CommonClass.h

@protocol CommonDelegate <NSObject>
// list protocol methods...
- (void)onSuccess;
- (void)onFailure;
@optional

@interface CommonClass : NSObject
@property (nonatomic, strong) id delegate;
-(void)Task;
@end

//CommonClass.m
#import "CommonClass.h"
@synthesize delegate;
-(void)Task
{
    if(do smth task){
        [delegate onSuccess];
    }
    else{
        [delegate onFailure]
    }
}


// ClassA.h
#import "CommonClass.h"

@interface ClassA : NSObject <CommonClassDelegate>
@end

// ClassA.m

-(void)init
{
    CommonClass *common = [[CommonClass alloc] init];
    common.delegate = self;
    [common Task];
}

- (void)onSuccess
{
    // do smth
}
- (void)onFailure
{
    // do smth
}

......对B类和C类做同样的事情