引用此评论
- (NSInteger)packData:(NSData *)datas { if (datas.length < kDSPersonHeaderString.length + 4 + 4) { return 1; } dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER); [self.mutalbeData appendData:datas]; dispatch_semaphore_signal(semaphore); NSString *string = [[NSString alloc] initWithData:_mutalbeData encoding:NSUTF8StringEncoding]; NSArray *stringArr = [string componentsSeparatedByString:kDSpersonEndString]; NSMutableArray *usefulStringArr = [NSMutableArray new]; int count = 0;//用来判断此次是否读取完毕 for (NSString *str in stringArr) { if ([str hasPrefix:kDSPersonHeaderString] && [str hasSuffix:@"}"]) {//判读他是json类型, NSString *new = [str substringWithRange:NSMakeRange(kDSPersonHeaderString.length + 4, str.length - (kDSPersonHeaderString.length + 4))]; NSData *data = [new dataUsingEncoding:NSUTF8StringEncoding]; id content = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil]; if (content) { //dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER); [DSpersonToolKits unpackWithDic:content waitToSendArray:_allData lengthData:[datas subdataWithRange:NSMakeRange(kDSPersonHeaderString.length, 4)]]; // dispatch_semaphore_signal(semaphore); } [usefulStringArr addObject:new]; }else if (str.length != 0){ NSData *strData = [str dataUsingEncoding:NSUTF8StringEncoding]; dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER); _mutalbeData = strData.mutableCopy; dispatch_semaphore_signal(semaphore); count ++; } } if (count == 0) { dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER); _mutalbeData = [NSMutableData data]; dispatch_semaphore_signal(semaphore); } return count; }
Copyright © 2014-2024 即时通讯网 - 即时通讯开发者社区 / 版本 V4.4
苏州网际时代信息科技有限公司 (苏ICP备16005070号-1)
Processed in 0.093749 second(s), 24 queries , Gzip On.