2013-06-26 38 views
2

我正在用SocketRocket在iOS上做一個小測試項目。但我似乎無法將我的頭圍繞在邏輯上。調用委託函數並返回結果

這是事情:我需要有一種「全局」函數來調用套接字。當我的應用程序打開它應該使用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)initalized SocketRocket實例啓動全局可執行函數的最佳方法。

回答

0

你在財產和合成

的appdelegate聲明變量在您的要求類

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

您可以使用單沒有麻煩導入AppDelegate類。真。這比用50000 LOC製作AppDelegate要好得多。此外,你的AppDelegate應該只知道應用程序事件,而不是套接字。

1

我不知道你如何假設單身人士是CPU昂貴。 Singleton的唯一花費是在第一次調用中懶惰地初始化對象一次。

另一方面,單例模式通常被認爲是不好的做法,因爲您訪問的對象是靜態的,因爲您引用的是單例類而不是對實例的引用。但是,使用單例代替訪問應用程序委託肯定更好。