我在ios上用SocketRocket做一个小测试项目。但我似乎无法绕过逻辑。
这就是事情:我需要有一种“全局”函数来调用套接字。当我的应用程序打开时,它应该使用websockets连接。
_webSocket.delegate = nil;
[_webSocket close];
_webSocket = [[SRWebSocket alloc] initWithURLRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"ws://localhost:12345/connectr"]]];
_webSocket.delegate = self;
self.title = @"Opening Connection...";
[_webSocket open];
但是,我需要获得连接委托函数的逻辑。我已经想过一个单身人士,但我读到单身人士的功能非常昂贵。
基本上我的问题是: 启动使用(appdelegate)初始化SocketRocket实例的全局可访问函数的最佳方法是什么?
答案 0 :(得分:1)
你可以毫无困难地使用单身人士。真。这比使用50000 LOC的AppDelegate更好。此外,您的AppDelegate应该只知道应用程序事件,而不是套接字。
答案 1 :(得分:1)
我不知道你怎么认为单身人士的cpu很贵。单身的唯一代价是在第一次调用中懒惰地初始化对象。
另一方面,单例模式通常被认为是一种不好的做法,因为您正在静态访问对象,因为您引用的是单例类而不是对实例的引用。但是使用单例而不是访问app委托当然更好。
答案 2 :(得分:0)
你在appdelegate中用属性和综合声明变量
您在需求类中导入appdelegate类
AppDelegate *objappdel=(AppDelegate*)[[UIApplication sharedApplication]delegate];
objappdel.variablename;