Ios 调用委托函数并返回结果

Ios 调用委托函数并返回结果,ios,objective-c,socketrocket,Ios,Objective C,Socketrocket,我正在用ios上的SocketRocket做一个小测试项目。但我似乎无法理解这个逻辑 事情是这样的:我需要一种“全局”函数来调用套接字。当我的应用程序打开时,它应该使用WebSocket进行连接 _webSocket.delegate = nil; [_webSocket close]; _webSocket = [[SRWebSocket alloc] initWithURLRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@

我正在用ios上的SocketRocket做一个小测试项目。但我似乎无法理解这个逻辑

事情是这样的:我需要一种“全局”函数来调用套接字。当我的应用程序打开时,它应该使用WebSocket进行连接

_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实例的全局可访问函数的最佳方式是什么

您可以在appdelegate中使用属性和合成声明变量

在需求类中导入appdelegate类

AppDelegate  *objappdel=(AppDelegate*)[[UIApplication sharedApplication]delegate];  
objappdel.variablename;

你可以毫无困难地使用单件。真正地这比使用50000 LOC创建AppDelegate要好得多。另外,您的AppDelegate应该只知道应用程序事件,而不知道套接字。

我不知道您如何假设单例程序的cpu开销很高。singleton的唯一代价是在第一次调用中惰性地初始化对象一次

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