使用块(block)传值比较简单,并且用块写出来的代码更为整洁。
代码模拟:
声明文件:
#import <Foundation/Foundation.h> typedef void (^GBCompletionHandler)(NSData* data, NSError *error); @interface GBUpload : NSObject /** * upload data to some where * * @param data which to be upload * @param completionHandle do some logic when upload finish. */ - (void) upload:(NSData*) data completionHandler:(GBCompletionHandler) completionHandle; @end
#import "GBUpload.h"
@implementation GBUpload
- (void) upload:(NSData*) data completionHandler:(GBCompletionHandler) completionHandle {
NSLog(@"uploading......");
sleep(3);
NSLog(@"upload success");
if (completionHandle) {
completionHandle(data, nil);
}
}
@endGBUpload *upload = [[GBUpload alloc] init];
[upload upload:nil completionHandler:^(NSData *data, NSError *error) {
if (error) {
NSLog(@"upload failed");
} else {
NSLog(@"upload finish, update UI");
}
}];
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/zhuimengfuyun/article/details/47027371