void testFunction (id testArgument[]) {
return;
}
「オブジェクト配列パラメーターの意図した所有権を明示的に記述する必要があります」というエラーが表示されます。ARC が testArgument 配列内のオブジェクトの所有権タイプを指定する必要があるのはなぜですか?
void testFunction (id testArgument[]) {
return;
}
「オブジェクト配列パラメーターの意図した所有権を明示的に記述する必要があります」というエラーが表示されます。ARC が testArgument 配列内のオブジェクトの所有権タイプを指定する必要があるのはなぜですか?
Jeremy の回答を拡張するために、設計時に ARC には 2 つの主な目標がありました。
効率を維持または最大化しながら、純粋な Objective-C コードでメモリ管理を可能な限り完全に自動化します (実際、ARC は手動の保持解放よりも効率的です)。
C と Objective-C の間の境界を越えるときは、メモリ管理の目的を明確に宣言する必要があります。
また、ARC の実装は非常に保守的です。つまり、動作が従来「未定義」であった場所では、ARC が警告を発します。
したがって、この場合、コンパイラが一貫性のある特定のメモリ管理規則のセットを配列の内容に適用できるように、意図の宣言が必要です。
ARC は、メモリ リークを回避するために挿入retain
/呼び出しを行うかどうかを知る必要があるためです。release