Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 从singleton经过的代表?_Objective C - Fatal编程技术网

Objective c 从singleton经过的代表?

Objective c 从singleton经过的代表?,objective-c,Objective C,在这里的好人的帮助下,我能够写一篇单篇文章,但却无法让代表们从中受益 开始时,我有一个socketConnector课程,在家庭课程中,我以他为例,还从他那里得到了一个代表: socketInstance=[[SocketConnector alloc]init]; //in Home class socketInstance.delegate=self; 然后我需要为他创建一个singleton,并且仍然让他将代理送到主页 因此,我创建了一个单例类名:share

在这里的好人的帮助下,我能够写一篇单篇文章,但却无法让代表们从中受益

开始时,我有一个
socketConnector
课程,在
家庭
课程中,我以他为例,还从他那里得到了一个代表:

       socketInstance=[[SocketConnector alloc]init]; //in Home class
        socketInstance.delegate=self;
然后我需要为他创建一个singleton,并且仍然让他将代理送到
主页

因此,我创建了一个单例类名:
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;
    }
正如您所见,我在这里设置了一次套接字类,而不是从
主页使用它
类:

    [sharedConnector defaultConnector].connector.delegate=self; //setting delegates to home!
(连接器在单例上有一个属性)
这确实有效,但我再也不能让代表们回家了。(所有代理函数仍在主类中,因为它们在开始时的位置)

您直接访问
连接
,这与
自连接
(使用合成方法)不同

因此,改变:

connector=[[SocketConnector alloc]init]; 


对于为什么要从Singleton调用delegate方法,有一个很好的解释。我想使用Singleton将委托获取到Home类,正如我所展示的,我试图将连接器实例的委托从Singleton添加到Home类。如果是Singleton,当您使用以下代码时,init方法不是invoke:[sharedConnector defaultConnector].connector.delegate=self;您何时调用singleton类的init方法?@junkor它被调用。[sharedConnector defaultConnector]调用sharedConnector上的init方法,而sharedConnector反过来调用连接器对象的init方法它会执行调用@giorashcohhh Great@Rant的委托吗?你在哪里?有什么见解吗?
self.connector=[[SocketConnector alloc]init];