iOS:是否可以创建NSObjects矩阵?

时间:2015-04-06 14:57:08

标签: ios objective-c c matrix memory-leaks

由于目标C是C的超集,因此可以使用malloc / free和原始类型来创建NxM元素的矩阵。我不喜欢它,因为它可能会导致错误和内存泄漏。最后一点仍然是真的吗? ARC是否提供C类型的发布?

 int** matrix=(int**)malloc(N*sizeof(int*));
 for(int i=0; i<N; i++)
     matrix[i]=(int*)malloc(M*sizeof(int));

是否有可能采用另一种Objective-C方式?我找到了NSMatrix,但它适用于mac,而不是iOS。

1 个答案:

答案 0 :(得分:1)

  

ARC是否提供C类型的发布?

不,它没有。 ARC代表自动引用计数,这意味着它仅适用于引用计数的对象。

由于malloc / free处理&#34;普通&#34; freestore分配,您从malloc收到的内存块不符合ARC的条件。

然而,这并不意味着您无法通过&#34;捎带&#34;来管理malloc - 分配的内存,从而无法实现某种程度的自动化。在ARC:

  • 创建一个具有指向矩阵的实例变量的类,并在指定的初始值设定项中分配矩阵。
  • 在已分配的内存块上添加调用dealloc的{​​{1}}方法。

现在你有一个引用计数的类来保存你的矩阵。每当ARC指示你的类解除分配时,矩阵所拥有的内存也会被释放:

free