我有我封裝ABRecordID與當它被用來作爲一個鍵添加到一個NSMutableDictionary,我得到的運行時異常的一類:NSInvalidArgumentException/copyWithZone異常與的NSMutableDictionary
「NSInvalidArgumentException: *** - [MyRecordId copyWithZone:]:無法識別的選擇發送到 實例」
MyRecordId聲明:
@interface MyRecordId : NSObject {
ABRecordID abRecordId;
}
-(id)initWithId:(ABRecordID)anABRecordId;
@property (nonatomic) ABRecordID abRecordId;
@end
添加到字典:
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
MyRecordId *recordId = [[MyRecordId alloc] initWithId:anABRecordId];
[dict setObject:@"hello" forKey:recordId];
最後一行導致異常..我知道,你不能非對象類型存儲爲字典鍵,但我認爲它包裹起來NSObject的派生類會讓它好起來的。
我不應該存儲ABRecordID在其他對象?我應該做其他事嗎?
我不知道NSValue最適合這個用途。我將使用哪種初始化工具以「ABRecordID」構建它? – 2009-06-25 18:16:09
我要與'NSValue valueWithNonretainedObject'個人,應該爲你工作。請記住,它不會爲你保留你的對象... – Chris 2011-09-28 00:29:52