//
// ViewController.h
// 自定义回调方法测试
//
// Created by yangxinqiao on 13-6-17.
// Copyright (c) 2013年 yangxinqiao. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property(nonatomic,retain)IBOutlet UIButton *btn;
@property(nonatomic,retain)IBOutlet UIButton *btn2;
@property(nonatomic,retain)IBOutlet UILabel *note;
- (IBAction)btnClick:(id)sender;
- (IBAction)btn2Click:(id)sender;
@end
//
// ViewController.m
// 自定义回调方法测试
//
// Created by yangxinqiao on 13-6-17.
// Copyright (c) 2013年 yangxinqiao. All rights reserved.
//
#import "ViewController.h"
#import "netservice.h"
@interface ViewController ()
@end
@implementation ViewController
@synthesize btn,btn2, note;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)btnClick:(id)sender {
// 自定义回调方法
netservice *ob = [netservice new];
[ob passMethodwithBool:YES
delegate:self
onSuccess:@selector(returnSuccessedMethod1:)
onFailure:@selector(returnFailedMethod2:)];
}
- (IBAction)btn2Click:(id)sender {
netservice *ob = [netservice new];
[ob passMethodwithBool:NO
delegate:self
onSuccess:@selector(returnSuccessedMethod1:)
onFailure:@selector(returnFailedMethod2:)];
}
//回调方法
-(void)returnSuccessedMethod1:(NSString*)id {
self.note.text = id;
}
-(void)returnFailedMethod2:(NSString*)id {
self.note.text = id;
}
@end
//
// netservice.h
// 自定义回调方法测试
//
// Created by yangxinqiao on 13-6-17.
// Copyright (c) 2013年 yangxinqiao. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface netservice : NSObject
{
id temp_delegate;
SEL onSuccessCallback;
SEL onFailureCallback;
}
-(void)passMethodwithBool:(BOOL) boolvalue
delegate:(id)requestDelegate
onSuccess:(SEL)successCallback
onFailure:(SEL)failureCallback;
@end
//
// netservice.m
// 自定义回调方法测试
//
// Created by yangxinqiao on 13-6-17.
// Copyright (c) 2013年 yangxinqiao. All rights reserved.
//
#import "netservice.h"
@implementation netservice
-(void)passMethodwithBool:(BOOL) boolvalue
delegate:(id)requestDelegate
onSuccess:(SEL)successCallback
onFailure:(SEL)failureCallback
{
temp_delegate = requestDelegate;
onSuccessCallback = successCallback;
onFailureCallback = failureCallback;
//boolvalue仅仅是自定义的假设判断值。yes假设回调method1 ,no假设回调method2
if (boolvalue) {
[self method1];
} else {
[self method2];
}
}
-(void)method1 {
if([temp_delegate respondsToSelector:onSuccessCallback]){
[temp_delegate performSelector:onSuccessCallback withObject:@"returnSUCCESSvalue"];
}
}
-(void)method2 {
if([temp_delegate respondsToSelector:onFailureCallback]){
[temp_delegate performSelector:onFailureCallback withObject:@"returnFailedvalue"];
}
}
@end