- (void) initSDKFinish {
InitParameter *initParameter = [[InitParameter alloc]init];
initParameter.cpID = @"";
initParameter.gameID = @"";
initParameter.gameKey = @"";
initParameter.pubID = @"";
[[ThreeState shareInstance]initThreeStateWithInitParameter:initParameter Closure:^(NSInteger state, NSString * _Nonnull msg) {
if (state == 0) {
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"SDK初始化成功 - %ld,%@",(long)state,msg);
// [self loginButtonClicked];
[AppTools evalStringWithJsonData:@"ZCSDK.initSDKResult" jsonObject:@{}];
});
}else {
NSLog(@"SDK初始化失败 - %ld,%@",(long)state,msg);
}
}];
};
GCD (Grand Central Dispatch) 是Apple公司开发的一种技术,它旨在优化多核环境中的并发操作并取代传统多线程的编程模式。 在Mac OS X 10.6和IOS 4.0之后开始支持GCD。
dispatch_async(dispatch_get_global_queue(0, 0), ^{
// 处理耗时操作的代码块...
//通知主线程刷新
dispatch_async(dispatch_get_main_queue(), ^{
//回调或者说是通知主线程刷新,
});
});
dispatch_async开启一个异步操作,第一个参数是指定一个gcd队列,第二个参数是分配一个处理事物的程序块到该队列。
dispatch_get_global_queue(0, 0),指用了全局队列。
一般来说系统本身会有3个队列。
global_queue,current_queue,以及main_queue.
获取一个全局队列是接受两个参数,第一个是我分配的事物处理程序块队列优先级。分高低和默认,0为默认2为高,-2为低