Я пытаюсь использовать NSMutableDictionary для сопряжения моего объекта пользовательских классов с UIButton в качестве его ключа. UIButton, который является ключом, также является членом объекта, который я хочу сохранить как объект в NSMutableDictionary.
Определение моего класса выглядит следующим образом:
@interface ClassA : NSObject {
@public
UIButton *button1;
UIButton *button2;
UILabel *label;
}
@property (nonatomic, retain) UIButton *button1;
@property (nonatomic, retain) UIButton *button2;
@property (nonatomic, retain) UILabel *label;
@end
И моя реализация такова:
@implementation ClassA
@synthesize button1, button2, label;
@end
NSMutableDictionary находится в другом классе. Я определяю это в реализации следующим образом:
@interface UIClass1 : UIViewController {
NSMutableDictionary *Dictionary;
}
-(void)DoWork;
@property (nonatomic, retain) NSMutableDictionary *Dictionary;
@end
И часть, где я пытаюсь установить значения словаря, делается здесь:
-(void)DoWork{
Dictionary = [[NSMutableDictionary alloc] init];
ObjectA = [[ClassA alloc] init];
ObjectA->button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
ObjectA->button2 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
ObjectA->label = [[[UILabel alloc] initWithFrame:CGRectMake(20, 20, 20, 20)] autorelease]
/* THIS IS A TEST AND IT WORKS FINE */
NSString *str = [[NSString alloc] initWithFormat:@"test"];
[Dictionary setObject:obj1 forKey:str];
/*THIS IS WHAT I WOULD ACTUALLY LIKE TO DO */
[Dictionary setObject:Object1 forKey:ObjectA->button1];
[Dictionary setObject:ObjectA forKey:ObjectA->button2];
}
Я следовал этому коду через мой отладчик, и когда я попал в эту строку:
[Dictionary setObject:Object1 forKey:ObjectA->button1];
Это просто сбой SIGABRT. Ни одна из моих переменных не равна нулю, каждый объект выделен.
Есть идеи, почему я не могу установить ключ для кнопки из ClassA, но я могу установить строку NSString, которую я создал в качестве теста?