сбой приложения iphone при использовании NSMutableDictionary - PullRequest
0 голосов
/ 18 ноября 2010

Получил этот код в моих контроллерах (void) метод viewDidLoad

self.purchasesPerClassification = [NSMutableDictionary 
                                  dictionaryWithObjects:[NSArray arrayWithObjects:@"Moo",nil] 
                                  forKeys:[NSArray arrayWithObjects:@"MooKey",nil]
                                  ];

насколько я понимаю, это автоматическое освобождение, так как я не использовал alloc init, и в моей сделке у меня есть

[self.purchasesPerClassification release];

это часть контроллера с UITableViewController, и этот контроллер создается загруженным из основного контейнера и добавляется в главные контроллеры navigationController. Это, кажется, приводит к сбою моего приложения в симуляторе, так как, когда у меня его нет в коде, он работает хорошо любые указатели на то, почему это сбой

вот .h

@interface FirstAiderInsurancePurchasesViewController : UITableViewController {

    NSArray * availableClassifications;

    NSMutableDictionary * purchasesPerClassification;

}

@property(nonatomic, retain) NSArray * availableClassifications;
@property(nonatomic, retain) NSMutableDictionary * purchasesPerClassification;

@end

и вот части .m

@implementation FirstAiderInsurancePurchasesViewController
@synthesize availableClassifications;
@synthesize purchasesPerClassification;

- (void)viewDidLoad {
    [super viewDidLoad];

    self.availableClassifications = [NSMutableArray arrayWithObjects:@"Completed",@"Recover's",nil];

    self.purchasesPerClassification = [NSMutableDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"Object",nil]
                                                                          forKeys:[NSArray arrayWithObjects:@"ObjectKey",nil]];

}
- (void)dealloc {
    [super dealloc];
    self.availableClassifications = nil;
    self.purchasesPerClassification = nil;
}

Я пробовал оба

[purchasesPerClassification release];

и его сбой, когда я возвращаюсь к корневому контроллеру

Ответы [ 2 ]

0 голосов
/ 18 ноября 2010

[NSMutableDictionary dictionaryWithObjects] вернуть автоматически выпущенный экземпляр, который у вас нет [self.purchasesPerClassification release];

, но [куплен релиз версии классификации]

0 голосов
/ 18 ноября 2010

Во-первых, каково определение свойства purchasesPerClassification?

В любом случае, при условии, что он скопирован или сохранен, вам, вероятно, понадобится:

self.purchasesPerClassification = nil;

или

[purchasesPerClassification release];
...