多条网络消息 只处理一次

来源:互联网 发布:java hibernate 并发 编辑:程序博客网 时间:2024/05/21 19:45
////  ViewController.m//  test_message_01////  Created by jeffasd on 16/9/22.//  Copyright © 2016年 jeffasd. All rights reserved.//#import "ViewController.h"@interface ViewController ()@property (nonatomic, strong) NSMutableDictionary *reportPeerGoDicM;@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];        self.reportPeerGoDicM  = [NSMutableDictionary dictionaryWithCapacity:0];}- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{            int randomTimeA = arc4random_uniform(2);    int randomTimeB = arc4random_uniform(2);    int randomTimeC = arc4random_uniform(3);//    NSLog(@"the random is %d", randomTimeA);    //    randomTimeA = 1;//    randomTimeB = 1;        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(randomTimeA * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{        NSLog(@"peer_exit");        [self reportPeerGoMessageToServer:@"peer_exit"];            });        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(randomTimeB * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{        NSLog(@"stream_disconnect");        [self reportPeerGoMessageToServer:@"stream_disconnect"];    });    //    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(randomTimeC * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{//        NSLog(@"stream_close");//        [self reportPeerGoMessageToServer:@"stream_close"];//    });    }- (void)reportPeerGoMessageToServer:(NSString *)message{            @synchronized (self.reportPeerGoDicM) {                if (self.reportPeerGoDicM.count == 0) {            [self.reportPeerGoDicM setObject:message forKey:message];            NSLog(@"执行 - 0");        }else if (self.reportPeerGoDicM.count > 0){            if ([self.reportPeerGoDicM.allKeys containsObject:message]) {                [self.reportPeerGoDicM removeAllObjects];                [self.reportPeerGoDicM setObject:message forKey:message];                NSLog(@"执行");            }else{                [self.reportPeerGoDicM setObject:message forKey:message];            }        }            }    }- (void)didReceiveMemoryWarning {    [super didReceiveMemoryWarning];    // Dispose of any resources that can be recreated.}@end

0 0
原创粉丝点击