標籤:style class blog code http tar
在IOS開發中經常會用到回調的情況,下面介紹如何用block實現回調。
1 #import <Foundation/Foundation.h>2 3 @interface BLock : NSObject4 5 + (void)getBlock:(void (^)(NSString *))someblock;6 7 @end
BLock.h
1 #import "BLock.h" 2 #import <Foundation/Foundation.h> 3 4 @implementation BLock 5 6 + (void)getBlock:(void (^)(NSString *))someblock 7 { 8 NSLog(@"we are in a getBLock function"); 9 someblock(@"BLOCK GO GO");10 }11 @end
BLock.m
上面有一個BLock類, 裡面有個靜態方法,通過someblock回調一個string 資料。
1 #import <Foundation/Foundation.h> 2 #import "BLock.h" 3 int main(int argc, const char * argv[]) 4 { 5 6 @autoreleasepool { 7 8 [BLock getBlock:^(NSString *str){NSLog(@"%@",str);}]; 9 }10 return 0;11 }
main.m
通過回調回來的str參數 ,在main裡面顯示。
輸出結果如下
2014-06-26 18:01:31.065 MyFirstApp[2430:303] we are in a getBLock function2014-06-26 18:01:31.066 MyFirstApp[2430:303] BLOCK GO GOProgram ended with exit code: 0
也可以將BLock.h和BLock.m的檔案改寫成如下:
1 #import <Foundation/Foundation.h>2 3 typedef void (^ablock)(NSString *);//將block定義為新的類型4 5 @interface BLock : NSObject6 7 + (void)getBlock:(ablock)someblock;8 9 @end
BLock.h
1 #import "BLock.h" 2 #import <Foundation/Foundation.h> 3 4 5 @implementation BLock 6 7 + (void)getBlock:(ablock)someblock 8 { 9 NSLog(@"we are in a getBLock function");10 someblock(@"BLOCK GO GO");11 }12 @end
BLock.m