2

我在 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];

但是,我需要了解连接到委托函数的逻辑。我已经想到了单例,但我读到单例函数的 CPU 成本很高。

所以基本上我的问题是:启动使用(appdelegate)初始化的 SocketRocket 实例的全局可访问函数的最佳方法是什么。

4

3 回答 3

1

您可以毫无问题地使用单例。真的。这比使用 50000 LOC 制作 AppDelegate 要好得多。此外,您的 AppDelegate 应该只知道应用程序事件,而不是套接字。

于 2013-06-26T11:26:57.643 回答
1

我不知道您如何认为单身人士的 cpu 昂贵。单例的唯一开销是在第一次调用中延迟初始化对象一次。

另一方面,单例模式通常被认为是一种不好的做法,因为静态访问对象是因为您引用的是单例类而不是对实例的引用。但是使用单例而不是访问应用程序委托肯定更好。

于 2013-06-26T11:30:33.260 回答
0

您在 appdelegate 中使用属性和综合声明变量

您在需求类中导入 appdelegate 类

AppDelegate  *objappdel=(AppDelegate*)[[UIApplication sharedApplication]delegate];  
objappdel.variablename;
于 2013-06-26T11:21:15.800 回答