我正在编写一个我想加快的应用程序。我认为这样做的一种方法是从使用NSArray
和NSMutableArray
切换到使用直接c风格的指针数组。
我天真地尝试过:
MyObject** objects = (MyObject**) malloc(N/2*sizeof(MyObject*))
这会在使用ARC时报告编译器错误,因为它不知道如何处理**对象; 这可以通过添加桥接指令来修复。
我的问题是如何处理这个内存以及如何混合C和Objective-C
对象进行内存管理。
两种解决方案
MyObject* __weak* objects = (MyObject* __weak*) malloc(N/2*sizeof(MyObject*));
MyObject* __strong* objects = (MyObject* __strong*) malloc(N/2*sizeof(MyObject*));
这两个数组之间有什么区别,如何在完成后释放/释放它们。 NSArrays
被优化到不会导致加速的程度吗?
答案 0 :(得分:3)
NSArrays是否已经过优化,以至于不会导致速度加快?
是
你应该在工具中描述你的代码 - 即使你大量使用数组,你也可能会发现你的代码大部分时间花费在NSArray方法之外的地方,比如-objectAtIndex:
更进一步,你应该能够告诉我们 NSArray是否已经充分优化,你不需要改进它。如果您希望通过替换NSArray来加速代码,那么您应该已经分析了代码并确定了昂贵的部分。不要只是猜测需要改进的地方;测量它。