답변

0

ARC는 무료로하지 않습니다 - 참조 횟수가 0

경우가 증가하고 참조 카운트를 감소 및 할당 해제 객체 것이다 : 그런데

, ARC에 대한 자세한 설명은이 페이지를 참조

수동 보유/해제에 비해 ARC가 정확합니다. 보유/해제 쌍이 서로를 취소 할 때를 종종 알기 때문에 유지/릴리스를 자주 호출하지 않으며 호출하지 않기 때문에 보유/해제가 더 빠릅니다 Objective-C 메소드 호출 (Objective-C에서는 ARC를 사용하여 retain/release를 무시할 수 있습니다).

+0

왜 컴파일 타임이 아닌 런타임에 참조 횟수를 늘리거나 줄입니다. – oneofone

0

ARC는 C++의 std :: shared_ptr과 같은 메커니즘이 아니더라도 참조 횟수를 사용하여 개체가 범위를 벗어날 경우 이탈 시간 함수를 호출해야한다는 것을 알 수 있습니다. Obj-C의 경우 해당 호출이 해제 될 것입니다.

참조 카운트가 감소하는 방식을 관리하기 위해 컴파일러에서 추가 된 릴리스 호출. clang 메커니즘이하는 방식은 매우 정교하며 레퍼런스 카운트를 증가시키는 모든 메소드에 대한 호출을 위해 균형 잡힌 호출을 릴리스할지 여부를 확인하는 수고를 덜어줍니다.

원래 질문과 관련하여 ARC는 런타임 응용 프로그램에 추가 성능 비용이 발생해서는 안됩니다.

앱에 메모리 문제가 있다고 의심되는 경우 계기에서 앱의 프로필을 작성하고 시간을보아야합니다.

메모리 최적화는 완전히 다른 해결책으로 해결할 수있는 왁스 볼입니다. 따라서 스레드가 많은 응용 프로그램에서 동시 메모리 할당에 문제가있는 경우 뛰어난 메모리 관리자와 함께 제공되는 Intel의 Thread Building Blocks와 같은 오픈 소스 라이브러리를 살펴볼 수 있습니다.하지만 C/C++ 용으로 설계되었습니다. . http://clang.llvm.org/docs/AutomaticReferenceCounting.html