Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.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
尝试在以前的view controller iOS上设置委托时出错_Ios_Objective C_Delegates_Viewcontroller - Fatal编程技术网

尝试在以前的view controller iOS上设置委托时出错

尝试在以前的view controller iOS上设置委托时出错,ios,objective-c,delegates,viewcontroller,Ios,Objective C,Delegates,Viewcontroller,我有两个视图控制器,ControllerA和ControllerB。在ControllerA中单击按钮时,按下ControllerB。我有助手类MyClass和delegate,在ControllerA中我设置了dlegate并接收消息,现在当我进入ControllerB时,我再次设置delegate并接收消息。现在,当我回到ControllerA时,我得到一个错误: [ViewControllerB retain]:发送到解除分配实例的消息 添加MyClass.delegate=self时出错

我有两个视图控制器,ControllerA和ControllerB。在ControllerA中单击按钮时,按下ControllerB。我有助手类MyClass和delegate,在ControllerA中我设置了dlegate并接收消息,现在当我进入ControllerB时,我再次设置delegate并接收消息。现在,当我回到ControllerA时,我得到一个错误:

[ViewControllerB retain]:发送到解除分配实例的消息


添加MyClass.delegate=self时出错;在ControllerA方法视图中显示。我需要将委托还原到以前的控制器。我做错了什么?

在ViewController A的视图中,是否将代理设置回ViewController A?是否已将委托的属性类型设置为强属性?它应该是弱的/assign.Delegate属性是非原子的,弱的。MyClass的AppDelegate中的属性是强的,我在ControllerA和ControllerB中获得该属性。在我获得MyClass的属性后,我将委托设置为当前控制器的self。这听起来像是你们在MyClass中做的事情。为什么需要在应用程序委托中保存一个MyClass实例?如果只有一个实例可用,您是否实现了任何方法来确保它是一个单例类?MyClass是打开TCP套接字连接的类,所以我需要通过我的应用程序进行持续连接。所以我为来自套接字的数据创建了委托方法。委托方法需要在ControllerA和ControllerB中实现。所以我需要在每次控制器更改时设置委托。这听起来像是一个很好的例子,说明何时使用单例类来确保只打开该类的一个实例。这样,您也不需要在应用程序委托中保留对对象的引用。检查