繁体   English   中英

带有ARC的Objective C中的对象数组

[英]Object Array in Objective C with ARC

我正在编写一个我想加快的应用程序。 我认为这样做的一种方法是从使用NSArrayNSMutableArray切换到使用直接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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM