3
void testFunction (id testArgument[]) {
    return;
}

我收到错误“必须明确描述对象数组参数的预期所有权”。为什么 ARC 需要我指定 testArgument 数组中对象的所有权类型?

4

2 回答 2

6

为了扩展 Jeremy 的答案,ARC 在设计时有两个主要目标:

  • 在纯 Objective-C 代码中使内存管理尽可能全自动,同时保持或最大化效率(事实上,ARC 可以比手动保留释放更有效)。

  • 当跨越 C 和 Objective-C 之间的边界时,需要准确地声明内存管理意图。

同样,ARC 的实现非常保守。也就是说,在任何传统上“未定义”行为的地方,ARC 都会发出警告。

因此,在这种情况下,需要声明意图,以便编译器可以将一组一致且特定的内存管理规则应用于数组的内容。

于 2012-10-29T16:33:10.610 回答
2

因为ARC需要知道是否为你插入retain/release调用以避免内存泄漏。

于 2012-10-29T15:19:52.383 回答