通常情况下,我们会以这种方式创建1000000 NSObject
。
NSMutableArray* objs = [[NSMutableArray alloc] initWithCapacity:1000000];
for (int i = 0; i < 1000000; i++) {
MyObject* o = [[MyObject alloc] init];
o.str = [NSString stringWithFormat:@"%d", i];
[objs addObject:o];
}
但是,这可能会很慢。也许应该合并很多内存分配,或者还有其他一些技巧来加速它。
如何更有效地为数千NSObject
分配空间?
增加: 使用 malloc 获取大量内存并重新启动它也是非法的。由于从普通内存转换为NSObject会因访问不良而失败。见下文:
答案 0 :(得分:2)
这个问题没有捷径可走。如果你需要分配100万个对象,那么由于消耗太多内存需要时间并且可能会失败。
鉴于这种限制,您需要考虑不同的解决方案。例如,如果这些对象中的每一个都代表一些项,那么就有一个ItemManager
对象可以根据需要管理这些项目。然后,经理类可以在块中分配内存,而不是为单个项目分配内存,这样可以更好地执行并且更具可伸缩性。
但是,如果您没有准确解释这些对象所代表的内容,我无法提供更详细的替代方案。