iOS Block简单应用

跨文件传值

  • 较常用的Block用法
  • 过程:由ViewController调用BSGBlockMethod的方法,并于BSGBlockMethod.h赋值并传递给ViewController
  • 先设置BSGBlockMethod,后于ViewController调用
  • 也可以用做成属性的形式进行传值
  • 第一个是直接定义Block,Block可以重复使用;第二种方法则是将Block直接嵌入方法中,不需要专门在方法外定义Block
定义Block的方法

ViewController.m:

#import "BSGBlockMethod.h"


- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    BSGBlockMethod * BlockMethod = [[BSGBlockMethod alloc]init];
    [BlockMethod BSGManagerWithBlock:^(NSString *a, NSString *b) {
        NSLog(@"a:%@,b:%@",a,b);
    }];
    
    
    
}

BSGBlockMethod.h:

#import <Foundation/Foundation.h>

@interface BSGBlockMethod : NSObject


typedef void(^MyBlock)(NSString* a,NSString * b);

-(void)BSGManagerWithBlock:(MyBlock)TheBlock;


@end

BSGBlockMethod.m:


#import "BSGBlockMethod.h"

@implementation BSGBlockMethod


-(void)BSGManagerWithBlock:(MyBlock)TheBlock
{
    NSString * a = @"hi~";
    NSString * b = @"~hello";
    
    
    TheBlock(a,b);
    
}


@end

将Block直接嵌入方法中
  • 名称就不要在意了,封装网络请求的时候顺便测试的
  • 未封装成单例,反正也没什么大影响,用[BSGHTTPManager manager]单纯是为了随大流

ViewController.m:

#import "BSGHTTPManager.h"

- (void)viewDidLoad {
    [super viewDidLoad];
    
    BSGHTTPManager * BSGManager = [BSGHTTPManager manager];
    
    [BSGManager BSGBlockWithFirstString:@"hello " secondString:@"xigua!" backBlock:^(NSString *resultString) {
        NSLog(@"result:%@",resultString);
    }];
    
}

BSGHTTPManager.h:


#import <Foundation/Foundation.h>

@interface BSGHTTPManager : NSObject

+(instancetype)manager;

//一个无关测试
-(void)BSGBlockWithFirstString:(NSString *)aString secondString:(NSString *)bString backBlock:(void(^)(NSString * resultString))blockMessage;

BSGHTTPManager.m:


#import "BSGHTTPManager.h"

#import <AFHTTPSessionManager.h>

@implementation BSGHTTPManager


+(instancetype)manager{
    
    return [[[self class] alloc] init];
    
}



//测试
-(void)BSGBlockWithFirstString:(NSString *)aString secondString:(NSString *)bString backBlock:(void (^)(NSString *))blockMessage
{
    
    NSString * resultStr = [aString stringByAppendingString:bString];
    
    blockMessage(resultStr);
    
    
}


文件内传值

懒得写

参考文章不一定看了

参考链接:iOS中Block的基础用法
参考链接:一篇文章看懂iOS代码块Block

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,217评论 30 472
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,252评论 4 61
  • Swift版本点击这里欢迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh阅读 25,572评论 7 249
  • 001 我要成为优秀的长跑运动员 这位女士,我们美容中心正在搞活动,祛痘补水美白一条龙服务,包您明艳动人。诚邀您进...
    自愈小姐阅读 175评论 1 2
  • 最近,不,也不是最近,反正从几年前或者好几年前,总会有人问我,你做那么多的志愿者活动,你有回报吗? 第一次被问到这...
    向火火阅读 642评论 0 9