//
// LTHomeAsyncSocket.h
// LTLeyoyoWH
//
// Created by PsylifeMacBook on 15/5/13.
// Copyright (c) 2015年 LakeTony. All rights reserved.
//
#import <Foundation/Foundation.h>
#define LTHEAD @"\f\rFD"
#define LTEND @"\f\n\rEND"
#define LTFen1 @"\f\r\f&"
#define LTFen2 @"\f\n\f#"
@interface LTSocketDataHelp : NSObject
+(LTSocketDataHelp *)sharedManager;
+(LTSocketDataHelp *)sharedInstance;
+(LTSocketDataHelp *)FX;
-(NSArray*)dataArray:(NSString *)netString;
@end
//
// LTHomeAsyncSocket.m
// LTLeyoyoWH
//
// Created by PsylifeMacBook on 15/5/13.
// Copyright (c) 2015年 LakeTony. All rights reserved.
//
#import "LTSocketDataHelp.h"
@interface LTSocketDataHelp ()
{
NSString *someProperty;
}
@end
static LTSocketDataHelp *sharedManager = nil;
@implementation LTSocketDataHelp
+(LTSocketDataHelp *)FX
{
return [[self class]sharedInstance];
}
+(LTSocketDataHelp *) sharedInstance
{
static LTSocketDataHelp *sharedInstace = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInstace = [[self alloc] init];
});
return sharedInstace;
}
#pragma mark Singleton Methods
//非GCD
+(LTSocketDataHelp *)sharedManager {
@synchronized(self) {
if (sharedManager == nil)
sharedManager = [[self alloc] init];
}
return sharedManager;
}
-(id)init {
if (self = [super init]) {
someProperty =@"";
}
return self;
}
// Should never be called, but justhere for clarity really.
-(void)dealloc {
someProperty =nil;
}
//下面的方法确保只有一个实例对象
+(id)allocWithZone:(NSZone *)zone{
if (sharedManager==nil) {
sharedManager=[super allocWithZone:zone];
}
return sharedManager;
}
-(id)copyWithZone:(NSZone *)zone{
return sharedManager;
}
-(NSArray*)dataArray:(NSString *)netString
{
//字符串以结尾比较
BOOL isCompleteHead =[netString hasPrefix:LTHEAD];
//字符串以开头比较
BOOL isCompleteEnd =[netString hasSuffix:LTEND];
if (!isCompleteHead) {
//如果不是正常开头,将上次收尾连接入本次串
netString = [NSString stringWithFormat:@"%@%@",someProperty,netString];
// someProperty = @"";
}
NSMutableArray* array = [NSMutableArray arrayWithArray:[netString componentsSeparatedByString:LTEND]];
if (!isCompleteEnd ) {
//如果结尾不完整,将本次收尾保存
if (array.count>0) {
someProperty = [array lastObject];
[array removeLastObject];
}
}
return array;
}
@end