[英]Object Array in Objective C with ARC
我正在编写一个我想加快的应用程序。 我认为这样做的一种方法是从使用NSArray
和NSMutableArray
切换到使用直接c风格的指针数组。
我天真地尝试过这样做:
MyObject** objects = (MyObject**) malloc(N/2*sizeof(MyObject*))
这会在使用ARC时报告编译器错误,因为它不知道如何处理**对象; 这可以通过添加bridge指令来修复。
我的问题是如何处理这个内存以及如何进行混合C和Objective-C
对象的内存管理。
有两个解决方案
MyObject* __weak* objects = (MyObject* __weak*) malloc(N/2*sizeof(MyObject*));
MyObject* __strong* objects = (MyObject* __strong*) malloc(N/2*sizeof(MyObject*));
这两个数组之间有什么区别,如何在完成后释放/释放它们。 NSArrays
是否NSArrays
优化以至于不会导致速度加快?
NSArrays是否经过优化以至于不会导致速度加快?
是。
您应该在Instruments中分析您的代码 - 即使您大量使用数组,您也可能会发现您的代码大部分时间都花费在NSArray方法-objectAtIndex:
其他位置,例如-objectAtIndex:
.
更进一步, 您应该能够告诉我们 NSArray是否已经充分优化,您无需进行改进。 如果您希望通过替换NSArray来加速代码,那么您应该已经分析了代码并确定了昂贵的部分。 不要只是猜测需要改进的地方; 测量它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.