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;