Using blocks to pass values is simple, and the code written in blocks is more uncluttered.
Code emulation:
Declaration file:
#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 completionh Andle does some logic when upload finish. */-(void) Upload: (nsdata*) Data completionhandler: (Gbcompletionhandler) Completionhandle; @end
Implementation file:
#import "GBUpload.h" @implementation gbupload-(void) Upload: (nsdata*) Data completionhandler: (Gbcompletionhandler) Completionhandle { NSLog (@ "uploading ..."); Sleep (3); NSLog (@ "upload success"); if (completionhandle) { completionhandle (data, nil);} } @end
Function call:
Gbupload *upload = [[Gbupload alloc] init]; [Upload upload:nil completionhandler:^ (nsdata *data, Nserror *error) { if (error) { NSLog (@ "Upload failed"), } else { NSLog (@ "Upload finish, update UI"); } ];
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
Block Block Implementation Pass value