2013-03-27 64 views
0

在這裏的優秀人士的幫助下,我能夠寫一個單身人士,但不能從中獲得代表。從單身人士傳遞代表?

一開始我有一個socketConnector類,並從Home類,我向他提出一個實例,並且也得到了他的代表:

 socketInstance=[[SocketConnector alloc]init]; //in Home class 
     socketInstance.delegate=self; 

比我需要創造一個單身的他,並仍然讓他的代表到Home

所以我創建一個單獨的類名:sharedConnector,並在其中我有:

+(sharedConnector*)defaultConnector 
{ 
    static sharedConnector *myConnector ; 
    @synchronized(self) 
    { 
     if(myConnector==nil ) 
      myConnector=[[sharedConnector alloc]init ]; 
     return myConnector; 
    } 
} 

    - (id)init 
    { 
     if (self = [super init]) 
     { 
      connector=[[SocketConnector alloc]init]; //setting here the socketClass 
     } 
     return self; 
    } 

,你看,我曾經設置,這裏的套接字類,而不是從Home類使用它:

[sharedConnector defaultConnector].connector.delegate=self; //setting delegates to home! 

(連接器上有一個屬性在單身人士) 它的工作,但我沒有讓代表回家了。 (所有代表功能仍處於首頁,因爲它們在開始時的位置)

+0

你想從單身調用委託方法一個很好的解釋? – 2013-03-27 13:28:47

+0

我想讓委託人使用單身人士的單身人士,因爲我展示了我試圖將單身人士的連接器實例的委託人添加到家庭類別中。 – Curnelious 2013-03-27 13:33:37

+0

case singleton,init方法未被調用,當你使用這些代碼時:[sharedConnector defaultConnector] .connector.delegate = self;你什麼時候調用單例類的init方法? – junkor 2013-03-27 15:00:14

回答

0

您正在訪問connection,與self.connection(使用合成方法)不同。

因此改變:

connector=[[SocketConnector alloc]init]; 

self.connector=[[SocketConnector alloc]init]; 

還有就是爲什麼here

+0

它會執行委託調用@giorashc – 2013-03-27 14:49:51

+0

只有OP可以告訴我們... – giorashc 2013-03-27 14:51:10

+0

ohhh偉大的@Rant哪裏有藝術嗎?有什麼見解? – giorashc 2013-03-27 15:33:50