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!

(コネクタにはシングルトンのプロパティがあります)動作しますが、デリゲートを家に帰らせません。(すべてのデリゲート関数は、最初の場所と同じように、まだ Home クラスにあります)

4

1 に答える 1

0

(合成メソッドを使用する)connectionと同じではない直接アクセスしています。self.connection

だから変更:

connector=[[SocketConnector alloc]init]; 

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

ここに理由の良い説明があります

于 2013-03-27T14:24:49.010 に答える