Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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 弱属性(委托)仍导致保留周期_Objective C_Cocoa_Automatic Ref Counting - Fatal编程技术网

Objective c 弱属性(委托)仍导致保留周期

Objective c 弱属性(委托)仍导致保留周期,objective-c,cocoa,automatic-ref-counting,Objective C,Cocoa,Automatic Ref Counting,这很奇怪。我有一个典型的委托属性声明: @property (weak) id<BTSAudioStreamerDelegate> delegate; 它正在保留代理!我在dealloc中有一个NSLog,它没有被调用。如果我注释掉代理分配行,它会注释掉。另外,第一个对象播放音频,如果它没有解除锁定,我会同时播放两个音频流。不好的!我如何调试这个 编辑:我应该提到,在分配任何新对象之前,我正在设置btsAudioStreamer.delegate=nil。分配是否发生在块内?如果这

这很奇怪。我有一个典型的委托属性声明:

@property (weak) id<BTSAudioStreamerDelegate> delegate;
它正在保留代理!我在dealloc中有一个NSLog,它没有被调用。如果我注释掉代理分配行,它会注释掉。另外,第一个对象播放音频,如果它没有解除锁定,我会同时播放两个音频流。不好的!我如何调试这个


编辑:我应该提到,在分配任何新对象之前,我正在设置btsAudioStreamer.delegate=nil。

分配是否发生在块内?如果这是唯一一次引用“self”,那么它将导致self被捕获和保留。通过使用仪器来确认您的理论,以准确找到对象被保留的位置:@Catfish\u Man no blocks.@Darren谢谢-与仪器详细说明的链接正是我所需要的。这是一个时间。我忘了它们保留了发射它们的物体!代表的事情完全是在转移注意力。如果委托存在,我会设置一个计时器将消息发送回委托。可能应该在属性上使用KVO。无论如何,如果你的回答是我会接受的。
btsAudioStreamer.delegate = self;