我需要创建和销毁动态词典或数组, 并将它们作为实例变量,
所以例如,[伪代码]
*的.h
nsmutableDictionary myDictn???
nsstring arrayn ???
如何创建一个实例dictionarie,以及dinamically创建和销毁的属性?以及如何引用它?
*。米
n = 0
create container {
myDictn alloc init
n+1
}
other {
myDictn addobject@"data" forKey"myKey"
}
destroy container {
myDictn release
n-1
}
所以打算表明我想拥有myDict1,myDict2 ...... 如果创建, 或者在需要时销毁它们
非常感谢!
答案 0 :(得分:1)
动态创建字典&向他们添加条目你可以这样做 -
NSMutableDictionary *dictResult = [[[NSMutableDictionary alloc] init] retain];
[dictResult setValue:result forKey:@"key"];
这里result
可以是任何东西。 NSString
或NSArray
等。同时使用retain
保留此对象&如果没有明确释放,会导致内存泄漏。而是尝试以autorelease
方式执行ios,以便在不再引用时释放对象。你这样做 -
NSMutableDictionary *dictResult = [[[NSMutableDictionary alloc] init] autorelease];
这就是动态创建词典所需的全部内容。
答案 1 :(得分:1)
如果我的问题正确,这很容易
@interface MyClass {
NSMutableDictionary *dict;
NSMutableArray *arr;
}
@property (nonatomic, retain) NSMutableDictionary *dict;
@property (nonatomic, retain) NSMutableArray *arr;
@end
实施档案
@import "MyClass.h"
@implementation MyClass
@synthesize dict;
@synthesize arr;
- (id) init {
self = [super init];
if (self) {
dict = [[NSMutableDictionary alloc] init];
arr = [[NSMutableArray alloc] init];
}
return self;
}
- (void) dealloc {
[dict release];
[arr release];
[super dealloc];
}
- (void) otherStuff {
[dict setObject: @"value" forKey: @"key"];
[arr addObject: @"item"];
}
@end
来自其他班级的用法:
...
MyClass *instance = [MyClass new];
[instance.dict setObject: @"value" forKey: @"key"];
NSLog(@"Array items: %@", instance.arr);
[instance release];
...
答案 2 :(得分:1)
我认为你要求的是如何动态创建多个可变字典。您还没有说出编号方案的来源,因此您可能需要为此目的修改此解决方案。
你想要的是一个字典数组或字典。
将一个NSMutableDictionary
称为dictionaryContainer
。然后,当您要创建字典编号7时,请执行
NSMutableDictionary *aDictionary = [NSMutableDictionary new];
[dictionaryContainer setObject:aDictionary forKey:[NSNumber numberWithInt:7]];
要记住该词典,请执行
NSMutableDictionary *theSameDictionary = [dictionaryContainer objectForKey:[NSNumber numberWithInt:7]];
您不必对7进行硬编码,您可以从任何地方获取它并将其作为整数变量传递。