Objective c Obj-C:正确释放循环中分配的对象
希望我能解释清楚。 假设如下:Objective c Obj-C:正确释放循环中分配的对象,objective-c,memory-management,memory-leaks,release-management,retain,Objective C,Memory Management,Memory Leaks,Release Management,Retain,希望我能解释清楚。 假设如下: @interface ClassA : NSObject { NSMutableArray firstArray; NSArray secondArray; } #import "ClassA" @interface ClassB : NSObject { ClassA classAobject; } 然后在程序“Psuedo code”的其他部分中访问字典键,如: NSMutableArray* sample = [[NSMutableAr
@interface ClassA : NSObject {
NSMutableArray firstArray;
NSArray secondArray;
}
#import "ClassA"
@interface ClassB : NSObject {
ClassA classAobject;
}
然后在程序“Psuedo code”的其他部分中访问字典键,如:
NSMutableArray* sample = [[NSMutableArray alloc] init];
for (keys in Data)
{
ClassA* aObj = [[ClassA alloc] initWith: objectForKey:@"KeyHere" andWith:@"Key2Here"];
ClassB* bObj = [[ClassB alloc] init];
[bObj setClassAObj: aObj];
[sample addObject: bObj];
}
Singleton* single = [Singleton single];
[single setArray: sample];
我的问题是在循环内部创建的ClassA和ClassB对象,以及在循环外部存储它们的数组。我是不是因为不释放内存而泄露了内存?如果我真的释放了它们,我如何才能在存储“sample”数组的单例中不丢失对它们的引用呢
如果重要的话,存储它的单例数组将在类的“init”方法中分配和初始化。向数组添加对象将保留这些对象。因此,您需要在添加它们之后释放它们(如果没有自动释放)。类似地,您需要确保实例变量数组的@properties(在Singleton中)设置为retain,以便在Singleton中设置时保留样例数组。然后您还需要发布示例 此外,实例变量需要是指针:
@interface ClassA : NSObject {
NSMutableArray *firstArray;
NSArray *secondArray;
}
#import "ClassA"
@interface ClassB : NSObject {
ClassA *classAobject;
}
NSMutableArray在分别添加和删除对象时对其执行保留和释放。因此,alloc得到一个retain,add得到第二个retain。当阵列被销毁时,它将释放一个。这将使您的保留计数为1
你可以让这些自动释放。我相信将内存一起释放可以提高性能,这是推荐的方法。请不要针对这样的问题发布非编译代码。张贴您正在使用的实际代码。基本上不可能判断内存管理是否正确,因为这段代码部分是荒谬的。它也不是伪代码;伪代码通常是语言和框架不可知的,并且会忽略诸如
alloc
/init
之类的内容。