我有一個委託控制器。在什麼情況下地址上的對象可以更改? (obj-c)
@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
後,我看到的第一個地址,那是給我找麻煩的人,被分配和釋放的次數之前,我得到它。第二個對象只分配一次。在什麼情況下,指針可以像這樣被重用?
您可以添加代碼分配代理並將其分配給此對象的代碼? – nall 2009-10-01 18:29:18