1

我正在编写一个我想加快速度的应用程序。我想到的一种方法是从使用NSArrayNSMutableArray使用直接的 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已优化到不会导致加速的程度?

4

1 回答 1

3

NSArrays 是否已优化到不会导致其加速的程度?

是的。

你应该在 Instruments 中分析你的代码——即使你大量使用数组,你也会发现你的代码大部分时间都花在了 NSArray 方法以外的地方,比如-objectAtIndex:.

更进一步,应该真正能够告诉我们NSArray 是否已充分优化,您不需要对其进行改进。如果您希望通过替换 NSArray 来加速您的代码,您应该已经对您的代码进行了概要分析并确定了昂贵的部分。不要只是猜测需要改进的地方;测量它。

于 2013-04-18T04:43:27.463 回答