ARC - 为什么对象指针需要在函数定义中使用显式所有权类型?

时间:2012-10-29 15:16:37

标签: objective-c xcode automatic-ref-counting

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

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

2 个答案:

答案 0 :(得分:6)

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

  • 在纯Objective-C代码中尽可能使内存管理尽可能全自动,同时保持或最大限度地提高效率(事实上,ARC可以比手动保留版本更高效)。

  • 在跨越C和Objective-C之间的边界时需要完全特定的内存管理意图声明。

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

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

答案 1 :(得分:2)

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