由于目标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。
答案 0 :(得分:1)
ARC是否提供C类型的发布?
不,它没有。 ARC代表自动引用计数,这意味着它仅适用于引用计数的对象。
由于malloc
/ free
处理&#34;普通&#34; freestore分配,您从malloc
收到的内存块不符合ARC的条件。
然而,这并不意味着您无法通过&#34;捎带&#34;来管理malloc
- 分配的内存,从而无法实现某种程度的自动化。在ARC:
dealloc
的{{1}}方法。现在你有一个引用计数的类来保存你的矩阵。每当ARC指示你的类解除分配时,矩阵所拥有的内存也会被释放:
free