我有一个带代表的控制器。
@interface MyConversionController : NSObject {
id <ConversionDelegate> _delegate;
}
@property (assign) id delegate;
@end
@implementation
@synthesize delegate = _delegate;
@end
我得到
Unrecognized selector sent to instance 0x36c4a0
错误。我在上设置了一个断点
-(void)setDelegate(id)delegate
方法,以便我可以观察传入我的
MyConversionController
班级。我的
setDelegate
方法被调用两次,第一次是地址处的对象
0x36c4a0
我知道这符合
<ConversionDelegate>
协议。第二次调用此方法时,传入了另一个同样符合协议的对象。当开始对委托调用方法时,方法调用将发送到第一个对象。(
0x36C4A0
)现在是另一种物体(通常是
CFString
或
__NSFastEnumerationEnumerator
如果有什么不同的话)。
有人知道为什么会这样吗?
运行后
malloc_history
我看到第一个地址,那个给我带来麻烦的地址,在我到达之前被分配和释放了很多次。第二个对象只分配了一次。在什么情况下指针会像这样被重用?