У меня две проблемы, у меня есть один метод, который создает словарь, затем я сохраняю его в глобальной переменной, которую я синтезировал. Если я просто назначаю его, когда я пытаюсь получить доступ к нему из другого метода, он пуст, если я использую копирование, это приводит к утечке памяти.
Я могу просто назначить его, и он работает, если его, скажем, «более простой» объект, такой как NSString, почему это не работает с NSDictionary?.
.h:
@interface ClassIHate : UIViewController{
NSDictionary *postBuild;
}
@property (nonatomic, retain) NSDictionary *postBuild;
-(void)prepData;
@end
Я включаю только те классы, которые используют переменную postBuild, так как это моя проблема.
.m
@implementation ClassIHate
@synthesize postBuild;
- (void)viewDidUnload {
postBuild = nil;
}
- (void)dealloc {
[postBuild release];
[super dealloc];
}
-(void)prepData{
NSInteger i = 0;
NSMutableDictionary *_postBuild = [[NSMutableDictionary alloc]initWithCapacity:0];
for (NSString *key in self.keys) {
NSMutableArray *array = [ops valueForKey:key];
NSInteger j = 0;
for (MyDataType *object in array) {
NSString *abc = object.abc;
UITableViewCell *cell = [table cellForRowAtIndexPath:[NSIndexPath indexPathForRow:j inSection:i]];
UITextView *tv = (UITextView *)cell.accessoryView;
NSString *mon = tv.text;
NSString *monFormat = [[NSString stringWithFormat:@"%.2lf",[mon doubleValue]]stringByReplacingOccurrencesOfString:@"." withString:@","];
[_postBuild setObject:monFormat forKey:abc];
j++;
}
i++;
}
//postBuild = _postBuild; //Empty when called in other method
postBuild = [_postBuild copy]; //Leaks memory
[_postBuild release];
}
-(void)realizarOperaciones{
//DO STUFF
NSArray *postKeys = [postBuild allKeys]; //postBuild is nil if I dont use copy, leaks memory if I do.
//DO STUFF
}
В чем может быть проблема здесь?
Спасибо, Стефано.