block 理解及 簡單回調


block 就是一個代碼塊,上代碼:

TestBlock類中  就是定義block     給 block 傳入參數  ,“方法”體里   留到回調的地方   實現

#import <Foundation/Foundation.h>

typedef void (^BlockCallBack)(NSString *SayWhat);

@interface TestBlock : NSObject
{
    BlockCallBack bcb;


}
@property(nonatomic,assign)BlockCallBack bcb;
-(void)initBcb:(id)entity:(BlockCallBack)bcb1;
@end
#import "TestBlock.h"
#import <objc/runtime.h>
@implementation TestBlock
@synthesize bcb;

-(void)initBcb:(id)entity :(BlockCallBack)bcb1
{
    const char *name=   object_getClassName(entity);
  
    self.bcb=bcb1;
    if (bcb) {
        bcb([[NSString alloc] initWithUTF8String:name]);
    }else
    {
        NSLog(@"參數  bcb1 未實現...");
    
    }
    

}





-(void)dealloc
{
    
    [super dealloc];

}
@end

再joce 類中  (一人名  簡單事例   不太規范)

回調 block   得到參數   實現 “方法”體

#import <Foundation/Foundation.h>
#import "TestBlock.h"
@interface Joce : NSObject
{
    TestBlock *tb;


}
@property(nonatomic,retain)TestBlock *tb;


-(void)sayHello;
@end
#import "Joce.h"

@implementation Joce
@synthesize tb;


-(void)sayHello
{

    if (tb) {
        [tb initBcb:self :^(NSString *name){
        
        
            NSLog(@"%@ Say Hello Word!!!!!!",name);
        
        
        
        }];
    }else
    {
    
        NSLog(@"請實例化 joce");
    
    }



}

-(void)dealloc
{

    [tb release];
    [super dealloc];
}


@end

ok....

希望下次能再  項目中用到....

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM