//
// JLViewController.m
// Block实现回调
//
// Created by XinYou on 15-5-8.
// Copyright (c) 2015年 vxinyou. All rights reserved.
//
#import "JLViewController.h"
@interface JLViewController ()
@end
@implementation JLViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[self getUserInfoByToken:@"201505080010BBFFKKIIIOSINBJJHF" success:^(NSString *userName, NSString *openId) {
// 打印从服务器获取到的数据
NSLog(@"userName:%@, openId:%@", userName, openId);
}];
}
/**
* 模拟从服务器获取数据
* 根据token获取用户信息
*/
- (void)getUserInfoByToken:(NSString *)token success:(void (^)(NSString *userName, NSString *openId))success{
// 创建一个并行队列
dispatch_queue_t q = dispatch_queue_create("bing_xing", DISPATCH_QUEUE_CONCURRENT);
// 执行异步任务
dispatch_async(q, ^{
// 子线程中模拟访问网络,让子线程睡眠4秒
[NSThread sleepForTimeInterval:4.0];
// 打印当前线程,由打印结果可知:当前为子线程
// NSLog(@"%@", [NSThread currentThread]);
// 假设从服务器获取到的数据
NSString *username = @"zhangsan";
NSString *openid = @"123456";
// 在主线程中执行下面代码
dispatch_async(dispatch_get_main_queue(), ^{
// 打印当前线程,由打印结果可知:当前为主线程
// NSLog(@"%@", [NSThread currentThread]);
success(username, openid);
});
});
}
@end
使用Block模拟网络请求回调
最新推荐文章于 2022-05-07 11:59:36 发布